Nic*_*end 2 search stack android
我有一个MapActivity,当按下搜索按钮时,它会显示Android搜索框.SearchManager管理对话框,并将用户的查询传递给可搜索的活动,该活动搜索SQLite数据库并使用自定义适配器显示结果.
这很好 - 我从显示的数据库中得到了正确的结果.
但是,我想要做的是在用户点击搜索结果时在地图上的MapActivity中显示结果.目前,这意味着启动一个新的MapActivity,使用Bundle传递搜索结果.
我认为更清洁的方法是将搜索结果传递回原始活动,而不是开始新的活动.目前,我的活动堆栈是MapAct - > SearchManager - >搜索结果 - >新MapAct.这意味着从新MapAct中按"后退"将返回查询结果,然后返回到原始MapAct.
似乎在搜索结果中,调用finish()不会导致在调用MapActivity中调用onActivityResult.
任何想法如何获得此回调并维护合理的活动堆栈?
我一直在寻找这个问题的答案,最后发现了一些有用的东西.我必须使原始的调用活动也成为可搜索的活动,所以我在清单中的条目如下所示:
<activity android:name=".BaseActivity"
android:launchMode="singleTop">
<!-- BaseActivity is also the searchable activity -->
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
<!-- enable the base activity to send searches to itself -->
<meta-data android:name="android.app.default_searchable"
android:value=".BaseActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
随后的搜索,而不是在这个活动中,手动和startActivityForResult与真正的搜索活动,那么这将让你setResult和finish回原来的呼叫活动.
| 归档时间: |
|
| 查看次数: |
2724 次 |
| 最近记录: |