我只是想口头解释我现在遇到的麻烦,而不是显示整个代码,因为我觉得你可能更容易找出问题所在。
我从活动A 开始。当我点击按钮B 时,我转到活动C 。在此活动中配置了一些内容后,我按了后退按钮返回上一个活动A 。
以下是活动B 中的onBackPressed()
部分。
@Override
public void onBackPressed() {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
}
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(intent, RESULT_OK);
finish();
}
使用该代码,我设法回到上一个,活动A 。但是当我在活动A 中再次点击后退按钮时,我发现自己的活动A 具有预配置状态。
以下是活动A 中的onBackPressed()
。
@Override
public void onBackPressed() {
super.onBackPressed();
turnOffRingtone(RingtoneVolumeControl.PLAYER);
}
private void turnOffRingtone(MediaPlayer ringtone) {
try {
if (ringtone != null) {
ringtone.stop();
ringtone.release();
}
} catch(IllegalStateException e) {
Log.i(ApplicationManager.LOG, e.getMessage());
}
}
答案 0 :(得分:1)
在从Activity A传递intent时,在intent中添加此标志。它将清除后栈
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
答案 1 :(得分:0)
你必须在活动B中做这样的事情
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
试试这个。因为您在活动B onBackPressed()中再次启动一项活动,所以请删除该代码并将上面的代码添加到您的代码中。
答案 2 :(得分:0)
如果您正在尝试使用startActivityForResult和onActivityResult,那么根据我的理解,您会犯一些错误。首先,当你开始B活动时,你应该这样做:
startActivityForResult(intentB,1);
进入B活动后,执行代码逻辑,当您准备好回到之前的活动时(在这种情况下使用后退),您应该执行以下操作:
@Override
public void onBackPressed() {
if(mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
}
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
}
现在,回到活动A,您可以处理活动B的回复
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
//Write youy code for your result
}
}
}
答案 3 :(得分:0)
如果您没有正确A
活动,可能会发生这种情况。
如果您希望{1}}不再像音乐播放器应用中那样终止,则可以使用finish()
属性进行活动,如下所示:
Activity A
这是因为允许android:launchMode=singleTask
的活动在您的应用中只有一个实例。
如果您想将Intent发送到现有<activity
android:name=".ActivityA"
android:label="ActivityA"
android:launchMode="singleTask">
,则需要通过覆盖android:launchMode=singleTask
中的onNewIntent()
来捕获意图。