我如何确定哪个活动对片段负责?

时间:2017-01-22 17:23:37

标签: android

我有一个文件fragment_item_attachment.xml,其中包含<RelativeLayout>和相应的ItemAttachmentFragment.java,但如何确定相应的活动是什么?这些活动似乎都有不同的名称。

1 个答案:

答案 0 :(得分:1)

取决于哪个Activity启动片段。

为了添加片段,可能会有类似的代码:

// Here we have the fragment, but it isn't bound to an activity.
Fragment fragment = new MyFragment();

// Here the fragment will be bound to the activity.
FragmentTransaction transaction = getFragmentManager()
        .beginTransaction()
        .replace(R.id.container, fragment)
        .commit();

片段绑定到活动后,片段的getActivity()方法将返回活动。

如果它未绑定到某个活动,则getActivity()将返回null。

如果您从MainActivity启动了片段,并且想要访问该活动中的方法,则可以在片段中编写以下内容:

((MainActivity) getActivity()).myCustomMethod();

编写更安全的代码,如果以不同的方式使用片段,则避免可能的NullPointerException或ClassCastException:

if (getActivity() != null && getActivity() instanceof MainActivity) {
    ((MainActivity) getActivity()).myCustomMethod();
}