public void onClick(View v) {
switch(v.getId())
{
case R.id.bAddYourNumber:
FragmentTransaction trans = getFragmentManager().beginTransaction();
trans.replace(R.id.root_frame, new InsertPastNumbersFragment());
trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
trans.addToBackStack(TAG);
trans.commit();
break;
}
按下按钮时,片段被替换,前一个片段被放入后栈。 问题是如果按下按钮几次,相同的片段被多次放入后台堆叠,这导致按下电话后退按钮x按下按钮的次数返回到前一个片段。
有没有办法控制它只能添加到后栈一次?
答案 0 :(得分:1)
为您的交易添加标签:
trans.replace(R.id.root_frame, new InsertPastNumbersFragment())
变为
trans.replace(R.id.root_frame, new InsertPastNumbersFragment(), PAST_NUM_TAG)
然后,在处理交易之前,请检查:
if (getFragmentManager().findFragmentByTag(PAST_NUM_TAG) == null) {
// Fragment hasn't yet been added, do the transaction
} else {
// Fragment has already been added
}
或者,如果您有一个触发此按钮的按钮,则在添加片段后禁用按钮可能更有意义,以防止用户多次按下它。