我有一个LoginActivity(用户登录).它基本上是它自己Activity的主题就像一个对话框(看起来像一个对话框).它出现在一个SherlockFragmentActivity.我想要的是:如果登录成功,应该有两个FragmentTransaction更新视图.这是代码:
在LoginActivity,如果成功登录,
setResult(1, new Intent());
Run Code Online (Sandbox Code Playgroud)
在SherlockFragmentActivity:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 1) {
LoggedStatus = PrefActivity.getUserLoggedInStatus(this);
FragmentTransaction t = MainFragmentActivity.this.getSupportFragmentManager().beginTransaction();
SherlockListFragment mFrag = new MasterFragment();
t.replace(R.id.menu_frame, mFrag);
t.commit();
// Set up Main Screen
FragmentTransaction t2 = MainFragmentActivity.this.getSupportFragmentManager().beginTransaction();
SherlockListFragment mainFrag = new FeaturedFragment();
t2.replace(R.id.main_frag, mainFrag);
t2.commit();
}
}
Run Code Online (Sandbox Code Playgroud)
它在第一次提交时崩溃,使用此LogCat:
E/AndroidRuntime(32072): Caused by: java.lang.IllegalStateException: Can not perform this action …Run Code Online (Sandbox Code Playgroud) android android-intent android-activity android-fragmentactivity
根据文件
片段事务只能在活动保存其状态之前创建/提交.如果您尝试在Activity.onSaveInstanceState()之后(以及之后的Activity.onStart或Activity.onResume()之前提交事务,则会出现错误.
我可以理解片段事务在Activity.onSaveInstanceState()之后无法提交的第一部分,因为如果需要恢复活动,则提交后的状态可能会丢失.
但我不明白为什么我们不能在Activity.onStart或Activity.onResume()之前提交片段事务?Oncreate()也在Activity.onStart或Activity.onResume()之前.这是否意味着我们甚至无法在oncreate()中提交它?
android ×2