我遇到了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
}
答案 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或标签!