Android 方向更改时未添加碎片
我使用的是这样一个片段:Android 方向更改时未添加碎片,android,android-fragments,android-orientation,illegalstateexception,screen-rotation,Android,Android Fragments,Android Orientation,Illegalstateexception,Screen Rotation,我使用的是这样一个片段: public class MyFragment extends Fragment implements MyListener { private String name, id; public MyFragment(){ } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState
public class MyFragment extends Fragment implements MyListener {
private String name, id;
public MyFragment(){
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
Log.d(TAG, "Restoring saved state");
// Restore id & name
....
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.my_fragment, container, false);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// do stuff with AsyncHttpClient that will call "onResponseReady" after some time
}
@Override
public void onResponseReady() {
if (!isAdded()) {
Log.d(TAG, "Fragment not added");
return;
}
Log.d(TAG, "Fragment added");
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_ID, this.id);
outState.putString(KEY_NAME, this.name);
}
}
当我启动应用程序时,我会在LogCat中收到添加片段的消息,但如果我旋转设备,则会得到未添加的片段,因此,如果我尝试访问某些视图,例如my_Fragment.xml中定义的文本视图,我会得到一个非法状态异常:片段MyFragment未附加到活动
为什么在方向改变后片段没有连接到活动?发现了问题:当设备旋转时,整个活动就会重新创建。因此调用Activity onCreate,在这个方法中,我将用另一个片段替换当前片段。这就是为什么没有附加MyFragment。您是如何解决此问题的?我不太清楚解决方案,但我认为我修改了活动的onCreate方法,以便仅在没有savedInstanceState的情况下进行转换