【问题标题】:Android Fragment onBackPressedAndroid Fragment onBackPressed
【发布时间】:2017-05-24 08:50:02
【问题描述】:

我的片段转换发生得很奇怪。我试图在按下后退按钮时打开新片段:

//removed code

然后,当我在家片段时,没有我再次按下,它将关闭应用程序:

// removed code

我不明白为什么从一个片段切换到另一个片段共享相同的 onKey?就像它不应该是这样的行为:我在片段 2 中按下,打开主页片段,在主页片段中我再次按下,然后关闭应用程序。

目前它的工作原理是这样的:fragment 2 后按,打开 home fragment,我不碰任何东西,它进入 home fragment 的 onKey。

有什么想法吗?提前致谢。

【问题讨论】:

  • 让选民介意解释一下?

标签: java android android-fragments


【解决方案1】:

删除完成调用“getActivity().finish();”那就试试吧……

v.setFocusableInTouchMode(true);
    v.requestFocus();
    v.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if( keyCode == KeyEvent.KEYCODE_BACK ) {
                getActivity().moveTaskToBack(true);
                return true;
            } else {
                return false;
            }
        }
    });

如果没有,请尝试其他解决方案...在您的父活动中添加此方法。

@Override
public void onBackPressed() {
 FragmentManager fragmentmanager = getSupportFragmentManager();

 if(fragmentmanager.getBackStackEntryCount() > 0){
         fragmentmanager.popBackStack();
    } else{
        finish();
    }
}

【讨论】:

  • 不,当我从片段 2 调用主片段时,它仍然会自行关闭。它会出现一个超级短暂的瞬间,然后自行关闭。
  • 好吧,为什么你在这里使用后台任务..在父活动中做
  • 因为我想将其设置为返回主片段,然后再返回父活动
  • 它告诉我方法不会从其超类中覆盖。我的家庭片段正在扩展片段虽然
  • 不,它不能那样工作。因为我有不同的部分用于不同的目的,所以基本上在我背压的每个部分中,我想打开主页片段,而不是一个一个地慢慢弹出它们。例如,我从设置到费用再到配置文件,当我在配置文件中回按时,我想回到主页而不是配置文件 -> 费用 -> 设置 -> 主页
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多