我有两个活动Main和SearchEvent活动。 Main活动有一个launchmode:“singleTask”,没有任何与SearchEvent活动相关的特殊参数。
当我单击Main活动中的按钮时,SearchActivity活动将在前台启动并显示事件列表。当我点击其中一个列表项时,这些项应该获取eventId并启动Main.class活动,但由于Main.class已经存在于堆栈中,它会放在顶部但是杀死了SearchActivity(我看到onDestroy方法被称为。)
我不希望调用SearchEvent的onDestroy方法,只是SearchEvent活动进入后台并弹出Main活动。
此外,如果我尝试使用launchMode =“singleTop”,它会启动另一个我不想要的Main活动实例。
我启用什么设置来启动Main的同一个实例并在后台移动SearchEvent?
清单文件中的代码。
MainActivity
<activity
android:configChanges="orientation"
android:launchMode="singleTask"
android:name=".Main"
android:screenOrientation="portrait"
android:theme="@style/Theme.CustomDialog" >
<intent-filter >
<action android:name="android.intent.action.VIEW" />
</intent-filter>
<intent-filter >
<action android:name="android.intent.action.SEND" >
</action>
<category android:name="android.intent.category.DEFAULT" >
</category>
<data android:mimeType="image/*" >
</data>
</intent-filter>
<intent-filter >
<action android:name="android.intent.action.SEND" >
</action>
<category android:name="android.intent.category.DEFAULT" >
</category>
<data android:mimeType="video/*" >
</data>
</intent-filter>
</activity>
<activity>
SearchEvent代码
<activity
android:configChanges="orientation"
android:label="@string/app_name"
android:name="SearchEvent"
android:screenOrientation="portrait"
android:theme="@style/Theme.CustomDialog1" >
<intent-filter >
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
该代码用于首次调用主要活动。
Intent mainIntent = new Intent(SignIn.this, Main.class);
startActivity(mainIntent);
从主要活动调用SearchEvent的代码
Intent searchActivity = new Intent(Main.this, SearchEvents.class);
startActivity(searchActivity);
从SearchEvents活动再次调用主要活动的代码
Intent mainIntent = new Intent(SearchEvents.this, Main.class);
startActivity(mainIntent);
答案 0 :(得分:0)
如果搜索活动应该向用户显示事件列表并让用户选择一个,然后使用此结果调用主活动,您可能希望以不同的方式执行此操作。
如果我理解正确,您可能希望主要活动使用startActivityForResult()
启动搜索活动,并让搜索活动在完成时使用setResult()
将所选事件返回到主活动。通过这种方式,搜索活动不必再次启动主活动,它只是“回到它”。