应该重写Android后退按钮

时间:2012-12-28 22:29:34

标签: android tabs fragment

我想回到后面堆栈中的最后一个片段,所以我想让后退按钮弹回堆栈。我应该这样做吗?如果是这样,我应该覆盖onBackPressed()或onKeyDown()?

@Override
        public void onBackPressed()
            {
            Intent intent = new Intent(this,ABC.class);
            startActivity(intent);
            }

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

我的片段由于某种原因没有正确添加到后台

我正在使用它来尝试回到之前的片段,但顺序却很奇怪。我该怎么做才能使订单正确?

@Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft){
        if(teamsFrag !=null)
        {

            if(manage.getBackStackEntryCount() > 0)
                manage.popBackStack(manage.getBackStackEntryAt(manage.getBackStackEntryCount()-1).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);

            //ft.detach(dataFrag);
        }

2 个答案:

答案 0 :(得分:2)

简短回答?否。

答案很长?如果你不得不问,没有。

您应该使用片段管理器设置片段,以便后退按钮可以满足您的需要。您不应该覆盖后退按钮,而不是正确实现堆栈。

答案 1 :(得分:0)

  

我想回到后台堆栈中的最后一个片段,所以我想让后退按钮弹回堆栈。

当您使用FragmentManager添加新片段时使用FragmentTransaction#addToBackStack()时,这是默认行为。