基本上这是关于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和一个片段。当我将屏幕的方向更改为横向时,我会得到一个致命的异常,如下面的
FATAL EXCEPTION:main java.lang.IllegalStateException:不能 在onSaveInstanceState之后执行此操作 android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1343) 在 android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.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.View.performClick(View.java:2485)at android.view.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)at android.app.ActivityThread.main(ActivityThread.java:3687)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:507)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:867) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)at dalvik.system.NativeStart.main(原生方法)
这在api> 11的设备中运行良好,但在api <11的设备中崩溃。我对片段很新,因此想知道问题可能是什么。关于保存的活动状态是什么?
答案 0 :(得分:0)
“碎片需要API等级11或更高”
来自:http://developer.android.com/guide/components/fragments.html
答案 1 :(得分:0)
对于片段,请使用.commitAllowingStateLoss()
方法而不是.commit();
或尝试评论
//super.onSaveInstanceState(outState);
并查看是否有帮助