Java Android片段:防止多个addToBackStack调用

Java Android片段:防止多个addToBackStack调用,java,android,android-fragments,Java,Android,Android Fragments,} 当按下按钮时,片段被替换,前一个片段被放入后堆栈。 问题是,如果多次按下按钮,同一片段会多次放入backbackback中,这导致必须按x次按钮才能返回到上一片段 有没有一种方法可以控制只向后堆栈添加一次 为您的交易添加标签: trans.replace(R.id.root\u框架,新的InsertPastNumbersFragment()) 变成 trans.replace(R.id.root\u框架,新的InsertPastNumbersFragment(),过去的\u NUM\u标记)

}

当按下按钮时,片段被替换,前一个片段被放入后堆栈。 问题是,如果多次按下按钮,同一片段会多次放入backbackback中,这导致必须按x次按钮才能返回到上一片段


有没有一种方法可以控制只向后堆栈添加一次

为您的交易添加标签:

trans.replace(R.id.root\u框架,新的InsertPastNumbersFragment())

变成

trans.replace(R.id.root\u框架,新的InsertPastNumbersFragment(),过去的\u NUM\u标记)

然后,在处理交易前,检查:

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;

或者,如果您有一个按钮触发此操作,则在添加片段后禁用该按钮可能更有意义,以防止用户能够多次按下该按钮。

谢谢,我不确定是否是AVD emulator,但我将上述代码中的第一行作为bAddYourNumber.setEnabled(false)现在我至少可以按两次而不是多次。
if (getFragmentManager().findFragmentByTag(PAST_NUM_TAG) == null) {
    // Fragment hasn't yet been added, do the transaction
} else {
    // Fragment has already been added
}