2010-07-09 98 views
2

我在我的活动中实现了onBackPressed()方法。对于我的应用程序来说,我有这个功能是至关重要的。但是,控件永远不会进入此功能。当我按下后退按钮时,它会进入onPause()。onBackPressed()没有被执行

但问题是我不能在onPause()中有相同的逻辑,因为当我调用另一个活动时,当前活动调用onPause(),我不希望它执行onBackPressed() 。

请帮忙。

public void onBackPresed(){ 

    Log.d(TAG,"inside onBackPressed()"); 
     if(STATE == PREVIEW){ 

     } 
} 
+0

请将您的代码发布到覆盖OnBackPressed方法的地方。你是否使用正确的方法头(params,返回值)作为你想重写的原始头? – 2010-07-09 09:31:42

+0

上面的代码请检查 – Namratha 2010-07-09 09:35:53

+0

请尝试稍微裁剪你的代码,我们不需要看到它的全部内容,就像Mathias所说的那样,只是覆盖点。如果你想让人们回答你的问题,你还应该花一些时间,并标记你已经接受的其他问题的一些答案,这样做是很好的方式。你在运行什么版本的Android? – 2010-07-09 09:51:42

回答

12
public void onBackPresed(){ 

您键入一个 'S',应该onBackPre SS ED()

+11

这就是为什么你应该总是使用@Override。 :) – hackbod 2010-07-10 02:21:33

+0

是啊!这是正确的:) – Namratha 2010-07-10 14:36:34

+0

我不明白,当你使用's'时,Eclipse是否给你一个警告? – 2012-09-20 21:24:41

5

这是我要做的事。

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

哦。这比onBackPressed()更好。一种方法比另一种有优势吗? 我认为这种方法的一个优点是,当你在听按键时,你可以使用开关盒并且也包括背按键。 – Namratha 2010-07-10 14:35:46

+1

+1这适用于所有API级别。 'onBackPressed()'适用于API Level 5或更高级别(即Android 2.0+) – Felix 2010-11-07 16:45:31

3

刚抬起头,在Android开发者博客上公布有关覆盖背衬和处理向后兼容性here