我有一個應用程序與幾個SherlockFragmentActivities和SherlockFragment。我在支持輪換和活動之間的轉換時遇到了麻煩。SherlockFragment的,旋轉和onConfigurationChanged
在我的第一SherlockFragmentActivity,我試圖抓住旋轉與此代碼:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
InitializeUI();
details = new MeetingConnectFragment();
getSupportFragmentManager().beginTransaction().add(
R.id.activity_scheduled_meeting_connect, details).commit();
}
}
//this is called when the screen rotates.
// (onCreate is no longer called when screen rotates due to manifest, see: android:configChanges)
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
InitializeUI();
details = new MeetingConnectFragment();
details.setInfo(cInfo);
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.activity_scheduled_meeting_details, details);
trans.addToBackStack(null);
trans.commit();
}
private void InitializeUI() {
setContentView(R.layout.activity_meeting_connect);
// other stuff cut for brevity
}
內MeetinConnectFragment有一個按鈕,將彈出一個不同的活動。如果用戶旋轉屏幕,而在第二個活動,然後返回到本次活動中,程序崩潰與例外:
E/AndroidRuntime(17976): java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
E/AndroidRuntime(17976): at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1299)
E/AndroidRuntime(17976): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1310)
E/AndroidRuntime(17976): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:541)
E/AndroidRuntime(17976): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:525)
E/AndroidRuntime(17976): at com.level3.connect.meetings.MeetingConnectActivity.onConfigurationChanged(MeetingConnectActivity.java:49)
E/AndroidRuntime(17976): at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3675)
E/AndroidRuntime(17976): at android.app.ActivityThread.handleActivityConfigurationChanged(ActivityThread.java:3849)
E/AndroidRuntime(17976): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1370)
E/AndroidRuntime(17976): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(17976): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(17976): at android.app.ActivityThread.main(ActivityThread.java:4921)
E/AndroidRuntime(17976): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(17976): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(17976): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
E/AndroidRuntime(17976): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
E/AndroidRuntime(17976): at dalvik.system.NativeStart.main(Native Method)
唯一的例外是在提交變化的線。我一直在試圖弄清楚如何處理這種情況,但我不太清楚。幫助讚賞。
該日誌不完全包含完整的異常。你可以發佈其餘的? –
@ Tanis.7x我已經更新了該帖子,其餘部分都是異常.Tx –