1

基本上,这是我在有关 sherlocktabs 的方向上遇到的问题。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.activity_leavetab);


    ActionBar actionBar = getSupportActionBar();

    // Hide Actionbar Title
    actionBar.setDisplayShowTitleEnabled(false);
    View homeIcon = findViewById(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home
            : R.id.abs__home);
    ((View) homeIcon.getParent()).setVisibility(View.GONE);
    // Create Actionbar Tabs
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    // Set Tab Icon and Titles
    Tab1 = actionBar.newTab().setText("New Leave");
    Tab2 = actionBar.newTab().setText("My Leaves");
    // Set Tab Listeners
    Tab1.setTabListener(new TabListener(leaveform));
    Tab2.setTabListener(new TabListener(leave));


    // Add tabs to actionbar
    actionBar.addTab(Tab2);
    actionBar.addTab(Tab1);
    // actionBar.addTab(Tab3);      
}
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("tabState", ActionBar.getSelectedTab());
}

public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setBackgroundDrawable(
            new ColorDrawable(Color.parseColor("#FF8512")));
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    inflater.inflate(R.menu.leave, menu);
    MenuItem menu1 = menu.findItem(R.id.reload_list);
    menu1.setTitle(name);
    return true;
}

上面的片段活动创建了三个两个选项卡 - listfragment 和一个片段。当我将屏幕方向更改为横向时,出现如下致命异常

致命异常:主要 java.lang.IllegalStateException:在 android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1343) 在 android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager) 的 onSaveInstanceState 之后无法执行此操作.java:1361) 在 android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595) 在 android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574) 在 com.actionbarsherlock.internal。 app.ActionBarImpl.selectTab(ActionBarImpl.java:536) 在 com.actionbarsherlock.internal.app.ActionBarImpl$TabImpl.select(ActionBarImpl.java:912) 在 com.actionbarsherlock.internal.widget.ScrollingTabContainerView$TabClickListener.onClick(ScrollingTabContainerView. java:504) 在 android.view 的 android.view.View.performClick(View.java:2485)。View$PerformClick.run(View.java:9080) at android.os.Handler.handleCallback(Handler.java:587) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop (Looper.java:130) 在 android.app.ActivityThread.main(ActivityThread.java:3687) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java :507) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 在 dalvik.system.NativeStart。主要(本机方法)com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 的 java.lang.reflect.Method.invoke(Method.java:507) 的 Method.invokeNative(Native Method) com.android。 internal.os.ZygoteInit.main(ZygoteInit.java:625) 在 dalvik.system.NativeStart.main(Native Method)com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 的 java.lang.reflect.Method.invoke(Method.java:507) 的 Method.invokeNative(Native Method) com.android。 internal.os.ZygoteInit.main(ZygoteInit.java:625) 在 dalvik.system.NativeStart.main(Native Method)

这在 api > 11 的设备中运行良好,但在 api <11 的设备中崩溃。我对片段很陌生,因此想知道问题可能是什么。是否与已保存的活动状态有关?

4

2 回答 2

0

对于片段,使用.commitAllowingStateLoss()方法而不是.commit(); 或尝试注释掉 //super.onSaveInstanceState(outState);,看看是否有帮助

于 2013-11-15T01:05:55.947 回答
0

“片段需要 API 级别 11 或更高”

来自:http: //developer.android.com/guide/components/fragments.html

于 2013-11-08T00:47:18.810 回答