使用onBackPressed完成一个片段是真的吗?

时间:2014-12-12 19:33:35

标签: android android-fragments

我有一个片段(TimerToAnswer),我实现了onBackPressed()的{​​{1}}。当isVisible为true时片段是否能够返回,因为有一个计时器来回答问题。在Fragment(TimerToAnswer)中回答问题后,我将重定向到其他片段(ChooseQuestion)以选择其他问题来回答。在这个阶段,当我按下设备按钮后,它再次返回片段(TimerToAnswer),我不想那样做。对于这个问题,我尝试ActionBarActivity片段(TimerToAnswer),但我无法做到。

我试过了 finish() 要么 getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();

我在这里尝试

ActionBarActivity

getActivity().getSupportFragmentManager().popBackStack();

片段TimerToAnswer

public class CustomDrawerLayout extends ActionBarActivity implements OnItemClickListener{


@Override
    public void onBackPressed() {   
        TimerToAnswer tt = (TimerToAnswer)getSupportFragmentManager().findFragmentByTag("TimerToAnswer");

        if(tt != null && tt.isVisible()){
            return;
        }else{
            super.onBackPressed();
        }
    }
    }

1 个答案:

答案 0 :(得分:1)

当用户从TimerToAnswer返回时,它返回ChooseQuestion片段的原因是因为这一行:

ft.addToBackStack("back");

这是做什么的,as per the documentation

  

将此事务添加到后台堆栈。这意味着交易将在提交后被记住,并且当稍后从堆栈中弹出时将反转其操作

要解决此问题,请删除该行。