阻止ImageButton创建新活动

时间:2014-03-03 11:11:05

标签: java android android-intent onclick imagebutton

我有三个活动,每个活动都有不同的布局..

所有三种布局都有一个共同点(三个ImageButtons)可以在活动之间切换。在图像按钮的onClick中,我使用意图打开活动。

问题在于: ActivityA播放一首歌,现在当我点击播放时,歌曲开始播放,如果我决定切换到activityB,它会打开。从活动B,如果我想通过单击相应的ImageButton返回ActivityA,它会创建一个活动的新实例,其默认布局(没有播放歌曲)但我仍然可以听到这首歌。

意味着创建了一个新的ActivityA实例,我不希望它像这样,我希望当我单击相应的ImageButton时,它会转到上一个活动,其状态与我在切换之前保持的状态相同到ActivityB。

我认为这可能会解决问题,但我不认为它会考虑我有三个活动(如果只是两个活动,可能会使用它)

 public void onClick(View view) {
                Intent intent = new Intent();
                setResult(RESULT_OK, intent);
                finish();
 }

3 个答案:

答案 0 :(得分:2)

我建议使用标签导航或导航微调器而不是创建新活动。

但是如果你真的想要使用单独的活动,你可以尝试将它放在清单文件的活动标签中:

android:launchMode="singleTop"

http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

答案 1 :(得分:1)

我使用

开始工作
android:launchMode="singleTask" 

在android清单中。

android:launchMode="singleTop"
Mark Bukeima上面提到的并没有起作用,但他确实让我朝着正确的方向努力,知道我要使用android:launchMode =“singleTask”。

答案 2 :(得分:0)

可能是因为您使用starActivity()代替startActivityForResult()开始您的活动,以便从 ActivityA 切换到 ActivityB

这是你应该怎么做的:

/* In ActivityA */
public void onClick(View view) {
    Intent intentToB = new Intent(this, ActivityB.class);
    startActivityForResult(intentToB, 0); // Will start B whithout killing A
}