当我接近完成我的项目时,我遇到了一个非常奇怪的效果。我介绍了这条线
<uses-sdk android:minSdkVersion="8" />进入清单,并在模拟器和手机中重新运行项目(HTC Desire)。我注意到“后退”按钮在程序的许多地方都不起作用。当我将代码放到调试中时,onKeyDown侦听器正在触发OK,并将ok传递给super.onKeyDown(..),而onBackPressed侦听器根本没有触发。
当我从清单中删除uses-sdk条目时,一切都恢复正常。有没有人可以解释一下,因为我确实需要使用min-sdk语句。
更新:我已经尝试了min-sdk="1" (默认值),效果是一样的。然后,我删除了min-sdk的值,并使用了target-sdk的值,结果完全相同,即back按钮并不是在所有地方都有效。简单地删除标记<uses-sdk .... />就可以完全修复这个效果,但会给我留下一个问题,那就是在部署之前需要声明一个最小的SDK值。请帮帮我,来人,任何人...
发布于 2013-01-05 11:13:48
也许我们遇到了同样的问题。我使用this way来模拟一个软的后退按钮,但是当添加"min-sdk“时,该按钮不起作用。看起来"dispatchKeyEvent“和"min-sdk”有冲突。我用"onBackPressed“代替,它对我来说很好。
public class BackButtonClickListener implements View.OnClickListener {
public void onClick(View v) {
Activity host = (Activity) v.getRootView().getContext();
host.onBackPressed();
}
}
Button back = (Button) findViewById(R.id.your_button_id);
back.setOnClickListener(new BackButtonClickListener());发布于 2011-10-07 19:09:30
为什么不使用onKeyDown?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// do some stuff
return true;
}
return super.onKeyDown(keyCode, event);
}https://stackoverflow.com/questions/7677117
复制相似问题