【问题标题】:Android onKeyDown() not execute on pressing back buttonAndroid onKeyDown()在按下后退按钮时不执行
【发布时间】:2012-08-06 05:14:22
【问题描述】:

嗨,在谷歌上搜索后,我来这里寻求帮助。当用户按下设备的返回按钮时,我使用以下方法返回。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {


        Log.i("===BACK BUTTON PRESSED===", "BACK BUTTON");

        return true;
    } else {
        Log.i("===ELSE BACK BUTTON PRESSED===", "ELSE BACK BUTTON");

        return super.onKeyDown(keyCode, event);
    }
}

但是 logcat 不显示任何日志消息。

W/KeyCharacterMap(517): No keyboard for id 0  

W/KeyCharacterMap(517): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 请帮我找到这个。

已编辑问题:

这是我的整个班级。

public class Dreams_Reminder_detail_screen extends Activity {   

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        GroupDreams.group.back();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dreams_reminder_details_screen);        
}

}

【问题讨论】:

  • 覆盖 onBackPressed() 方法。
  • 还不行请帮忙。

标签: android android-keypad


【解决方案1】:

您可以覆盖onBackPressed() 函数并在那里实现您的逻辑。

更多理解请参考这篇android博文"Back and other hard keys: three stories"

您可以在 GroupDreams 中重写 onKeyDown 函数,这样可能会起作用

【讨论】:

  • 我只是在keydown函数中输入了log并打印出来了,你现在有什么问题??我不知道“GroupDreams.group.back();”因为这将是您的自定义函数。
  • 我使用 custometab 活动。 GroupDreams 是我的活动组。因此,如果用户按回按钮,我将返回 GroupDreams 的活动。但不起作用。
  • 你的活动正在关闭,如果这是你的问题,那么只需删除 moveTaskToBack(true);
  • 我删除 moveTaskToBack(true);但不回去。我对此非常纠结。
  • 请参考这篇博文,它在单个标签下显示多个活动,带有后退按钮功能ericharlow.blogspot.in/2010/09/…
【解决方案2】:

试试这个链接:Override back button to act like home button

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

【讨论】:

    【解决方案3】:

    您可以通过这种方式跟踪后退按钮事件:-

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    
         //Do the Logics Here 
    }
    

    【讨论】:

      【解决方案4】:

      用下面的代码试试吧

      @Override
          public boolean dispatchKeyEvent(KeyEvent event) {
              if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) 
              {
                   }
               }
      

      【讨论】:

        【解决方案5】:
            @Override
        public boolean onKeyDown(int keyCode, KeyEvent event)  {
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
                // do something on back.
                return true;
            }
        
            return super.onKeyDown(keyCode, event);
        }
        //How to intercept the BACK key in an Activity is also one of the common questions we see //developers ask, so as of 2.0 we have a new little API to make this more simple and easier //to discover and get right:
        
        @Override
        public void onBackPressed() {
        // do something on back.
        return;
        }
        

        【讨论】:

          【解决方案6】:

          您在 else{} 中编写了错误的超级方法。 像这样编辑你的代码

              @Override
              public boolean onKeyDown(int keyCode, KeyEvent event) {
                  if (keyCode == KeyEvent.KEYCODE_BACK) {
          
          
                      Log.i("===BACK BUTTON PRESSED===", "BACK BUTTON");
          
                      return true;
                  } else {
                      Log.i("===ELSE BACK BUTTON PRESSED===", "ELSE BACK BUTTON");
          
          
                  }
          return super.onKeyDown(keyCode, event);
          
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-27
            • 2013-02-11
            相关资源
            最近更新 更多