方向更改后片段中的 getActivity() 为空
Posted
技术标签:
【中文标题】方向更改后片段中的 getActivity() 为空【英文标题】:getActivity() in fragment is null after orientation change 【发布时间】:2013-12-31 06:44:34 【问题描述】:我有关于 startActivityForResult、片段和方向更改的问题。
我从一个片段调用 startActivityForResult(),然后打开附加片段的第二个活动。在第二个活动中,当我改变方向并返回第一个活动时,会调用 onActivityResult(片段方法)。但是有一个问题,因为我有这样的东西:
public void onActivityResult(int requestCode, int resultCode, Intent data)
getActivity(); //here's a problem because
//getActivity is null but only after orientation change on second activity
【问题讨论】:
【参考方案1】:您需要在调用 getActivity() 之前调用所需的 super,如下所示:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
getActivity();
【讨论】:
【参考方案2】:这为我解决了:
private Activity activity;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState)
super.onActivityCreated(savedInstanceState);
this.activity = getActivity();
并在您需要的片段中的任何位置使用此活动。
【讨论】:
【参考方案3】:所有的问题是我没有为 XML 中的片段声明 android:id。 Android 需要 ID 或 TAG 来识别存储的片段并复制其中的所有元素。所以伙计们,请记住 - 每个片段实例都需要唯一的 id 或标签!
【讨论】:
以上是关于方向更改后片段中的 getActivity() 为空的主要内容,如果未能解决你的问题,请参考以下文章
DialogFragment 方向更改崩溃与 getActivity()