代码之家  ›  专栏  ›  技术社区  ›  Donal Rafferty

Android-onBackPressed()不工作

  •  7
  • Donal Rafferty  · 技术社区  · 14 年前

    http://android-developers.blogspot.com/2009_12_01_archive.html

    我的代码如下:


        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event)  {
            if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
                    && keyCode == KeyEvent.KEYCODE_BACK
                    && event.getRepeatCount() == 0) {
                Log.d("CDA", "onKeyDown Called");
                onBackPressed();
            }
    
            return true;
        }
    
        @Override
        public void onBackPressed() {
        Log.d("CDA", "onBackPressed Called");
            Intent setIntent = new Intent(Intent.ACTION_MAIN);
            setIntent.addCategory(Intent.CATEGORY_HOME);
            setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(setIntent); 
    
            return;
        }   
    

    它适用于2.x之前的设备,但不适用于2.1 update-1版本的英雄和2.2版本的nexusone。

    这个例子有什么我遗漏的吗?或者有人能指出它为什么不起作用吗?

    我甚至都没按logcat里的按钮。

    3 回复  |  直到 14 年前
        1
  •  11
  •   ermau    13 年前

    你在用吗 onKeyUp()

    使用just onKeyDown() 在Android 1.x或 onBackPressed() 在Android 2.x中

        2
  •  4
  •   gary    14 年前

    一些快速搜索建议您在onKeyUp()期间放置Back intercept: http://developer.android.com/sdk/android-2.0.html . 值得一试。

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK
                && event.getRepeatCount() == 0) {
            event.startTracking();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                && !event.isCanceled()) {
            // *** DO ACTION HERE ***
            return true;
        }
        return super.onKeyUp(keyCode, event);
    }
    
        3
  •  0
  •   Peter Lang    12 年前

    onKeyDown()

    super.onKeyDown();
    

    而且在 onBackPressed()

    super.onBackPressed();
    
    推荐文章