首先  定义一个  回调接口

  1. public interface FragmentCallBack {
  2. public void callbackFun1(Bundle arg);
  3. public void callbackFun2(Bundle arg);
  4. }

让Activity实现了这个接口

  1. public class MainActivity extends ActionBarActivity implements FragmentCallBack
  2. {
  3. private Button btn;
  1. @Override
  2. public void callbackFun1(Bundle arg) {
  3. // TODO Auto-generated method stub
  4. switchFragment();//通过回调方式切换
  5. }
  6. @Override
  7. public void callbackFun2(Bundle arg) {
  8. // TODO Auto-generated method stub
  9. changeButtonColor();//通过回调方式调用Activity中的方法
  10. }
  11. }

最后在fragment的onAttach中绑定在点击事件中调用

  1. @Override
  2. public void onAttach(Activity activity) {
  3. // TODO Auto-generated method stub
  4. super.onAttach(activity);
  5. fragmentCallBack = (MainActivity)activity;
  6. }
  1. btn.setOnClickListener(new OnClickListener() {
  2. @Override
  3. public void onClick(View v) {
  4. // TODO Auto-generated method stub
  5. fragmentCallBack.callbackFun1(null);
  6. }
  7. });

同理  activity向fragment传值时只需要将new 出来的fragment上转型为fragment实现的接口类型 在activity中的点击事件中调用回调方法就可以传值了

fragment之间的传值最好是通过activity传值

activity中用getSupportFragmentManager   fragment中还有fragment用getChildFragmentManager

05-12 00:25