Java Android Tabhost非法状态异常
我正在使用Android内置的Tabhost小部件,以下错误导致应用程序崩溃:Java Android Tabhost非法状态异常,java,android,android-fragments,illegalstateexception,fragment-tab-host,Java,Android,Android Fragments,Illegalstateexception,Fragment Tab Host,我正在使用Android内置的Tabhost小部件,以下错误导致应用程序崩溃: Exception java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState android.support.v4.app.FragmentManagerImpl.checkStateLoss (FragmentManager.java:1842) android.support.v4.
Exception java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
android.support.v4.app.FragmentManagerImpl.checkStateLoss (FragmentManager.java:1842)
android.support.v4.app.FragmentManagerImpl.enqueueAction (FragmentManager.java:1860)
android.support.v4.app.BackStackRecord.commitInternal (BackStackRecord.java:650)
android.support.v4.app.BackStackRecord.commit (BackStackRecord.java:609)
android.support.v4.app.FragmentTabHost.onAttachedToWindow (FragmentTabHost.java:288)
android.view.View.dispatchAttachedToWindow (View.java:12612)
我没有使用片段事务或任何应该使用.commit()的东西,所以我仍然想知道是什么导致了这种情况
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mFirebaseAnalytics = DomVio.getInstance().getFirebaseAnalytics();
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
ImageView urgencyTabView = (ImageView) getLayoutInflater().inflate(R.layout.tab_host_item, null);
urgencyTabView.setImageResource(R.drawable.tab_urgency);
mTabHost.addTab(mTabHost.newTabSpec("Urgency").setIndicator(urgencyTabView), UrgencyFragment.class, null);
ImageView articlesTabView = (ImageView) getLayoutInflater().inflate(R.layout.tab_host_item, null);
articlesTabView.setImageResource(R.drawable.tab_articles);
mTabHost.addTab(mTabHost.newTabSpec("Articles").setIndicator(articlesTabView), LegalArticlesFragment.class, null);
ImageView awarenessTabView = (ImageView) getLayoutInflater().inflate(R.layout.tab_host_item, null);
awarenessTabView.setImageResource(R.drawable.tab_awareness);
mTabHost.addTab(mTabHost.newTabSpec("Awareness").setIndicator(awarenessTabView), AwarenessArticlesFragment.class, null);
ImageView expertsTabView = (ImageView) getLayoutInflater().inflate(R.layout.tab_host_item, null);
expertsTabView.setImageResource(R.drawable.tab_experts);
mTabHost.addTab(mTabHost.newTabSpec("Experts").setIndicator(expertsTabView), ExpertsTabsFragment.class, null);
ImageView questionareTabView = (ImageView) getLayoutInflater().inflate(R.layout.tab_host_item, null);
questionareTabView.setImageResource(R.drawable.tab_questionare);
mTabHost.addTab(mTabHost.newTabSpec("Questionare").setIndicator(questionareTabView), QuestionareFragment.class, null);
mTabHost.getTabWidget().setDividerDrawable(null);
mTabHost.getTabWidget().getChildAt(0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UrgencyFragment fragment = (UrgencyFragment) getSupportFragmentManager().findFragmentByTag("Urgency");
fragment.switchToMain();
mTabHost.setCurrentTab(0);
}
});
mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
if (tabId != null) {
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, tabId + " " + "tab");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
}
}
});
}
注释掉
ButterKnife
行。看看是不是这个引起的。我不知道.bind
有什么作用,但可能是因为它有什么作用?您不使用FragmentManager,但用于表格布局的底层API有我没有使用FragmentTransaction
您正在mTabHost.setup(…)
中传递getSupportFragmentManager()
。是的,这是在幕后发生的,但我无法控制,否则修复程序可能会将.commit()更改为.commitAllowingStateLoss()。这个问题有什么解决方案吗?我也遇到了同样的问题。