方向更改后,片段中的getActivity()为null

时间:2013-12-12 17:47:12

标签: android android-activity android-fragments orientation fragment

我遇到了startActivityForResult,片段和方向更改的问题。

我从一个片段调用startActivityForResult(),然后打开附加了片段的第二个活动。在第二个活动中,当我改变方向并返回第一个活动时,则调用onActivityResult(fragment方法)。但是有一个问题,因为我有这样的事情:

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 
}

3 个答案:

答案 0 :(得分:0)

在调用getActivity()之前,您需要调用所需的super,如下所示:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    getActivity();
}

答案 1 :(得分:0)

这为我解决了:

private Activity activity;

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    this.activity = getActivity();
}

并在所需片段中的任何位置使用此活动。

答案 2 :(得分:-1)

所有问题都是我没有为XML中的片段声明android:id。 Android需要ID或TAG来识别存储的片段并重现其中的所有元素。所以,伙计们,记住 - 片段的每个实例都需要唯一的id或标签!