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