шаг1: нажмите addNewFragmentBtn
добавить новый фрагмент [A]
и добавить его в backstackесли фрагмент не в backstack, фрагмент добавил, прежде чем он не появится снова, когда вытолкнуть стек
step2: добавить еще один фрагмент, который [B]
не в backstack
step3: нажмите addNewFragmentBtn
добавить новый фрагмент [C]
и добавить его в backstack
Step4: нажмите назад BTN назад к предыдущему фрагменту.
Весь прогресс должен быть A->B->C-B->A
, если я продолжаю нажимать кнопку «Назад» после шага 4, подсчеты записей в обратном стеке уменьшаются, но фрагмент A не является редактируемым. Как я могу прикрепить фрагмент A?
public class Main extends FragmentActivity {
private int i=1;
private int j=1;
public FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final View addNewFragmentBtn = findViewById(R.id.add_new_fragment);
final View backBtn = findViewById(R.id.back);
final View addNewFragmentNotInStackBtn = findViewById(R.id.add_new_fragment_not_in_stack);
addNewFragmentBtn.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
fragmentTransaction = getSupportFragmentManager().beginTransaction();
FragmentSample fragment = new FragmentSample();
Bundle args = new Bundle();
args.putString("key1", "fragment1-" + i + "is in backstack");
fragment.setArguments(args);
fragmentTransaction.add(R.id.content, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
i++;
}
}
);
addNewFragmentNotInStackBtn.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
fragmentTransaction = getSupportFragmentManager().beginTransaction();
FragmentSample fragment = new FragmentSample();
Bundle args = new Bundle();
args.putString("key2", "fragment2-" + j + " is not in backstack");
fragment.setArguments(args);
fragmentTransaction.add(R.id.content, fragment);
// fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
j++;
}
}
);
backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackEntryCount > 0) {
getSupportFragmentManager().popBackStack();
} else finish();
}
});
}
}
Попробуйте добавлять фрагменты с помощью 'ft.replace()' вместо 'ft.add()'. – owe
@owe Я хочу возобновить первый фрагмент A, когда пользователь нажимает кнопку «Назад», пропускает B, поэтому B не должен заменять A – log1000
, это будет автоматически обработано вашей задней стороной. Если вы добавите FragA и FragB, а затем щелкните по кнопке -> FragA. Но необходимо добавить каждый фрагмент к вашему столу с помощью 'ft.addToBackStack()'. – owe