如何使用Android后退按钮在我的应用中移回而不是关闭我的应用?

时间:2011-03-23 14:40:14

标签: java android callback

我的应用程序有三个活动,A,B和C.我通过OK按钮从A移动到B,我想通过使用Android设备的默认后退按钮从B移回A.但是,当我按下按钮时,整个应用程序都会关闭。我怎样才能解决这个问题呢?

4 个答案:

答案 0 :(得分:9)

我怀疑你在OK按钮上点击finish() onclick listener。不要那样做。 finish()会从活动堆栈中移除您的活动。

了解更多here

答案 1 :(得分:2)

为什么要开始你的活动结果?当你按下后退键时,结果被设置为BULT活动的RESULT_CANCELED,所以如果你不处理结果代码就会崩溃......

你可以像这样处理背压

private static final int NONE = -1;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_BACK) {

   setResult(NONE, intent);
        finish();
    return super.onKeyDown(keyCode, event);
}

答案 2 :(得分:1)

如果你是Ok按钮,你可以开始一个意图......比如

Intent int = new intent(context,B.class); startActivity(INT);

然后,如果你没有处理后退按钮。

如果使用默认后退按钮... 它将返回到A.

希望它有所帮助...

答案 3 :(得分:0)

在我的onClick方法中(在主要活动中)我使用代码:

 Intent intent = new Intent(context, SecondActivity.class);
 context.startActivityForResult(intent, SecondActivity.SECONDACTIVITY_REQUEST);

在清单中我得到了:

 <activity android:name=".SecondActivity" android:screenOrientation="landscape" android:launchMode="standard"></activity>

这对我来说没有任何其他我能看到的设置。你在回应什么事件?

请注意,您还可以使用以下代码返回活动:

super.setResult(Activity.RESULT_OK);
super.finish();

编辑... 确保您没有吞下主要活动onKeyDown事件中的事件。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    //your code here
    //if (keyCode ==
    //...
    //else
    return super.onKeyDown(keyCode, event);
}