0

我想回到后退堆栈中的最后一个片段,所以我想让后退按钮弹出堆栈。我应该这样做吗?如果是这样,我应该覆盖 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);
        }
4

2 回答 2

2

简短的回答?不。

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

您应该使用片段管理器设置您的片段,以便后退按钮执行您想要的操作。您不应该覆盖后退按钮而不是正确实现您的堆栈。

于 2012-12-28T22:30:26.523 回答
0

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

FragmentTransaction#addToBackStack()这是您在使用FragmentManager 添加新 Fragments时使用的默认行为。

于 2012-12-28T22:51:26.067 回答