从片段中调用片段方法

时间:2014-02-27 16:19:22

标签: android

当前我的片段A打开一个新的对话框片段B. Is there any way to call method from a fragment A method from a dialog fragment B?

2 个答案:

答案 0 :(得分:1)

关于android网站,你不应该从另一个片段调用一个片段,而应该让activity来处理切换片段。

要做到这一点,

您可以创建一个界面并在活动中实现它,

public interface MyListener{
    public void switchFragment(Fragment f);
}

public class MyActivity extends Activity implements MyListener{

    @Override
    public void switchFragement(Fragment f){
        getSupportFragmentManager().beginTransaction
                 .replace(R.id.container, f)
                 .commit();
    }
}

,在片段类中,

public class MyFragment extends Fragment{

    private MyListener listener;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            listener = (MyListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement MyListener");
        }
    }

   @Override
    public void onDetach() {
        super.onDetach();
        listener = null;
    }

}

并简单地使用

listener.switchFragment(fragment);

答案 1 :(得分:0)

您将需要以下两件事之一:

  • 连接您的活动中每个片段的引用
  • 使用企业服务总线(Otto是一个开源选项)直接在Fragments之间进行通信

没有办法在标准框架中直接将Fragment与Fragment对话。您必须手动创建此链接。