メイン アクティビティに 2 つのフラグメントがあります (1 番目のフラグメント、2 番目のフラグメント)。onCreate
メイン アクティビティのメソッドで、最初のフラグメントをコンテナー ビューに置き換えます。
2 番目のフラグメントには があり、ListView
その項目をクリックすると、新しいアクティビティが詳細として開始されます。
しかし、メインのアクティビティに戻ると、It is in onCreate イベントのために最初のフラグメントが表示されます。
バックスタックに最後のフラグメントがあり、それを表示するかのようにバックスタックを使用しようとしました。しかし、onCreate メソッドでは、バック スタックは常に null でした。
これが私の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
別のアクティビティから来たときにメソッドでスタック値を取得する方法は?
マイスクリーン