使用onBackPressed()实现向后兼容性

3

我想使用onBackPressed()方法,但仍然要为Android SDK 2.0之前的版本提供支持。 onBackPressed()是在Android SDK 2.0中引入的。那该怎么办呢?

3个回答

8

使用onKeyDown;

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

          // Your Code Here

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

4
您可以捕获关键事件并检查后退键。在您的活动中:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK){
        goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

编写goBack方法以返回所需位置。

更多信息请参见:Android - onBackPressed() not working


1

答案 ---> http://apachejava.blogspot.com/2011/01/backward-compatibility-using.html

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
            && keyCode == KeyEvent.KEYCODE_BACK
            && event.getRepeatCount() == 0) {
        // Take care of calling this method on earlier versions of
        // the platform where it doesn't exist.
        onBackPressed();
    }

    return super.onKeyDown(keyCode, event);
}

@Override
public void onBackPressed() {
    // This will be called either automatically for you on 2.0
    // or later, or by the code above on earlier versions of the
    // platform.
    return;
}

这个解决方案行不通。有两个问题...一,android.os.Build.VERSION.SDK_INT在Android 1.5上不可用。二,你需要调用super.onBackPressed(),否则返回按钮无法工作。调用super.onBackPressed()在Android 1.5设备下找不到并返回错误。 - Jona
这不是我的代码示例。我从Android开发者官方博客上获取的。 - AZ_

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