阻止多个Activity实例但仍然使用onActivityResult

时间:2011-09-30 22:31:58

标签: android android-activity launchmode

我有一项活动,我想只存在一次,无论它打开多少次。以前我使用的是launchMode singleTask,一切都运行得很好。但是,现在我需要使用onActivityResult,由于某种原因,它与launchMode singleTask不兼容。

你知道如何复制他们中的任何一个。

2 个答案:

答案 0 :(得分:3)

我的主要活动也是单一任务,但我肯定从我的主要活动开始活动以获得结果并获得结果。

这是我的宣言:

<activity 
    android:name=".activities.Main"  
    android:theme="@android:style/Theme.Light"
    android:screenOrientation="portrait" 
    android:launchMode="singleTask" 
    > 
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

这是我的onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode, resultCode, intent);
    // blah blah checking if if the requestCode and resultCode are good //
}

我确定你要在其他活动中设置结果......

因此,只需与我的代码交叉检查,让我们看看是否能找到问题。

  • 确保onActivityResult在覆盖时受到“保护”。

希望这有帮助

-serkan

答案 1 :(得分:1)

您可以使用FLAG_ACTIVITY_REORDER_TO_FRONT,这会将已启动的活动带到其任务堆栈的前面,而不是创建新实例。

请注意,结果将传递给第一个调用startActivityForResult的活动。这个answer提供了一个很好的例子。