【问题标题】:Fragment onKeyDown() not working as intended片段 onKeyDown() 未按预期工作
【发布时间】:2015-08-17 06:07:07
【问题描述】:

我有按 FragOne 调用 FragTest 和 FragTest 调用 FragBook 的顺序调用的片段。当我当前的片段是按后退按钮的 FragBook 时,FragTest 只显示一秒钟,然后我的应用程序被发送到应用程序托盘。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    FragmentManager fragManager = getSupportFragmentManager();
    Fragment frag = fragManager.findFragmentByTag("Frag_Book");

    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        if (frag.isVisible()) {
            fragManager.beginTransaction()
                    .replace(R.id.container, Fragment.instantiate(MainActivity.this, fragments[1]),"Frag_Test")
                    .commit();
        }
    }
    return super.onKeyDown(keyCode, event);
}

我的方法哪里出错了?谢谢...

【问题讨论】:

  • 也许你应该在片段交易之后return true?
  • 你在片段中调用 onKeyDown 吗?
  • 不,我在所有片段的基本活动中都调用了它......我很困惑......所以它发生是因为 return 语句......

标签: android android-fragments


【解决方案1】:
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        FragmentManager fragManager = getSupportFragmentManager();
        Fragment frag = fragManager.findFragmentByTag("Frag_Book");

        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            if (frag.isVisible()) {
                fragManager.beginTransaction()
                        .replace(R.id.container, Fragment.instantiate(MainActivity.this, fragments[1]),"Frag_Test")
                        .commit();
             return true; //"------------- should be add"
            }
        }
        return super.onKeyDown(keyCode, event);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2018-08-27
    • 2017-05-05
    • 2021-03-17
    • 2021-10-31
    • 2011-10-28
    • 2021-06-04
    相关资源
    最近更新 更多