我在主要活动中有两个片段(第一个片段,第二个片段)。onCreate
我用主要活动方法中的容器视图替换了第一个片段。
在第二个片段中有一个ListView
,当点击一个项目时,一个新的活动作为一个细节开始。
但是当我回到主 Activity 时,由于 It is in onCreate 事件,第一个片段显示。
我尝试使用 backstack,就好像 backstack 有我的最后一个片段然后显示它一样。但在 onCreate 方法中,返回堆栈始终为空。
这是我的onCreate
和 replaceFragments 方法代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("activity", "on create called");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
int backStackCount = fm.getBackStackEntryCount();
if (backStackCount > 0){
for (int entry = 0; entry < fm.getBackStackEntryCount(); entry++) {
Log.i("back stack", "Found fragment: " + fm.getBackStackEntryAt(entry).getName());
}
} else {
Log.i("back stack", "backstack count is null");
MainFragment mainFragment = new MainFragment();
replaceFragments(mainFragment);
}
mActionBarMainBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// setButtonsState(mActionMainBtnLineView);
if(mMainFragment == null){
mMainFragment = new MainFragment();
}
replaceFragments(mMainFragment);
}
});
mActionBarTransBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// setButtonsState(mActionTransactionsBtnLineView);
if(mTransactionsFragment == null){
mTransactionsFragment = new TransactionsFragment();
}
replaceFragments(mTransactionsFragment);
}
});
}
public void replaceFragments(Fragment fragment){
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
String fragmentName = fragment.getClass().getName();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment, fragmentName)
.addToBackStack(fragmentName)
.commit();
fragmentManager.executePendingTransactions();
if (fragmentName.equals(MainFragment.class.getName())) {
setButtonsState(mActionMainBtnLineView);
} else {
setButtonsState(mActionTransactionsBtnLineView);
}
}
onCreate
当来自另一个活动时,如何在方法中取回堆栈值?
我的屏幕