【发布时间】:2020-04-10 21:02:31
【问题描述】:
每当在mainactivity 上单击search icon 时,我都想打开一个新活动。这个名为SearchableActivity 的新活动将处理listview 中的所有相关搜索结果。我已按照post 中描述的步骤进行操作。
这是我目前拥有的:
我想在用户输入SearchView 时打开SearchableActivity。
我的代码如下所示:
AndroidManifest.xml
<activity
android:name=".MainActivity"
android:launchMode="singleTop">
<!-- meta tag points to the activity which displays the results -->
<meta-data
android:name="android.app.default_searchable"
android:value=".SearchableActivity" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SearchableActivity"
android:parentActivityName=".MainActivity">
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
<!-- meta tag and intent filter go into results activity -->
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
</activity>
MainActivity
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.options_menu, menu)
val manager = getSystemService(SEARCH_SERVICE) as SearchManager
(menu?.findItem(R.id.search)?.actionView as SearchView).apply {
setSearchableInfo(manager.getSearchableInfo(ComponentName(this.context, SearchableActivity::class.java)))
}
return true
}
可搜索活动
class SearchableActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_searchable)
Toast.makeText(this@SearchableActivity, "SA created", Toast.LENGTH_LONG).show()
handleIntent(intent)
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
if (intent !== null)
handleIntent(intent)
}
private fun handleIntent(intent: Intent) {
if (Intent.ACTION_SEARCH == intent.action) {
val query = intent.getStringExtra(SearchManager.QUERY)
Toast.makeText(this@SearchableActivity, "QUERY: $query", Toast.LENGTH_LONG).show()
}
}
}
【问题讨论】:
标签: android android-fragments kotlin searchview android-search