I have two fragments in main Activity (1st fragment, 2nd fragment). I replace the 1st fragment with the container view in the onCreate
method of main activity.
In the 2nd fragment there is a ListView
and when clicking an item on it, a new Activity starts as a detail.
But when I come back to the main Activity, the 1st fragment shows because of the It is in onCreate event.
I tried to use backstack as if backstack had my last fragment then show it. But in the onCreate method the back stack was always null.
Here is my onCreate
and replaceFragments method codes:
@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);
}
}
How to get back stack values in onCreate
method when come from an another activity?
My screens