onKeyDown() 或 onBackPressed()

16

我想在我的应用程序中实现返回按钮功能。 在应用程序中,每当我在中间点击后退按钮时,我的控件就会直接返回到登录页面,所以有人能告诉我在哪里覆盖 onKeyDown()onBackPressed() 方法吗?

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Log.e("back key pressed","Back key pressed");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

因为我是在onCreate内和onCreate外都写了这个代码,但它却不起作用……


通常,像 onKeyDown()onBackPressed() 这样的方法应该被重写(你可以利用 IDE,如 Eclipse,来美化代码),因此它们应该不在 onCreate() 中。你能准确地解释一下你的问题吗?出了什么问题? - Huang
看看这个答案:https://dev59.com/s1DTa4cB1Zd3GeqPFgAq#3558613 - SERPRO
1
在函数上方添加 @Override ... ??? - mihail
4个回答

12

谢谢,但是在哪里编写这个方法?我尝试将此方法写在onCreate中和onCreate外部,但控制流仍然没有进入该方法。你能否用简单的答案帮我解决问题? - user1249134

5
请见下方代码,将其写在onCreate之外。
  @Override  
    public boolean onKeyDown(int keyCode, KeyEvent event)  
  {  
         //replaces the default 'Back' button action  
         if(keyCode==KeyEvent.KEYCODE_BACK)  
         {  

                Intent intent = new Intent(currentActivity.this, RequiredActivity.class);
                finish();
                startActivity(intent); 

         }  
         return true;  
   }  

4

是的,您可以覆盖那个返回按钮。

public void onBackPressed() {

     Intent start = new Intent(currentclassname.this,which activity u want.class);
        startActivity(start);
        finishActivity(0);
        }

通过这种方式,您可以在任何活动中移动。这是非常简单易行的方法。

1

如果您关心的是从历史堆栈中删除登录活动。

在您从中启动任何其他活动时,在您的登录活动中执行finish();


3-05 14:13:56.327:W/KeyCharacterMap(374):使用默认键映射:/system/usr/keychars/qwerty.kcm.bin - user1249134
大家好,我的控件没有进入OnBack方法,有人能帮忙吗? - user1249134
Intent edit = new Intent(getParent(), MyGroup.class); TabGroupActivity parentActivity = (TabGroupActivity)getParent(); parentActivity.startChildActivity("添加联系人", edit); - user1249134

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接