Запретите несколько экземпляров Activity, но по-прежнему используйте onActivityResult - PullRequest
2 голосов
/ 01 октября 2011

У меня есть действие, которое я хочу существовать только один раз, независимо от того, сколько раз оно открыто. Ранее я использовал launchMode singleTask, и все работало отлично. Однако теперь мне нужно использовать onActivityResult, который по какой-то причине несовместим с launchMode singleTask.

Знаете ли вы, как повторить то, что делает любой из них.

Ответы [ 2 ]

3 голосов
/ 01 октября 2011

Моя основная деятельность также является однозадачной, но я, безусловно, запускаю действия из моих основных действий и получаю обратно результаты.

Вот мое декларация манифеста:

<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 голос
/ 28 июля 2012

Вы можете использовать FLAG_ACTIVITY_REORDER_TO_FRONT , который перенесет запущенную активность в начало стека своей задачи вместо создания нового экземпляра.

Обратите внимание, что результат будет доставлен первомуактивность, которая называется startActivityForResult.Этот ответ дает хороший пример того, как это работает.

...