【问题标题】:Should the android back button be overriden是否应该覆盖android后退按钮
【发布时间】:2012-12-28 22:29:33
【问题描述】:

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

【问题讨论】:

    标签: android tabs fragment


    【解决方案1】:

    简短回答?没有。

    长答案?如果你非要问,不。

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

    【讨论】:

    • 那么我应该如何设置它们以便循环遍历片段?
    • @rasen58 为什么要使用 BACK 按钮循环浏览片段,从用户的角度来看,这似乎很不直观。
    • @fhucho 不会更直观,片段位于不同的选项卡中,因此您不想按下选项卡,而只想按下后退按钮。实际上,现在我想起来,你是对的,我不需要它。但是当应用程序启动时,他们单击一个选项卡,该选项卡会删除以前存在的所有选项卡并在操作栏中显示 3 个新选项卡,因此我认为按后退按钮返回上一个操作会更直观条形布局。
    【解决方案2】:

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

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

    【讨论】: