gpt4 book ai didi

android - 从使用 SearchManager 启动的 Activity 中获取结果

转载 作者:行者123 更新时间:2023-11-29 21:38:41 25 4
gpt4 key购买 nike

我正在关注这个relatively simple tutorial关于如何手动启动 SearchableActivity 以便我可以从中获取 result

他基本上是将base Activity(Activity A)设置为可搜索 Activity (在 list 中),以便它接收搜索 Intent ,然后手动启动真正的搜索Activity (Activity B) with startActivityForResult,

修改 list 后,他只有一段代码。我的问题:

你把这段代码放在哪里?

private void handleIntent(Intent intent) {
// Get the intent, verify the action and get the query
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
// manually launch the real search activity
final Intent searchIntent = new Intent(getApplicationContext(),
MySearchActivity.class);
// add query to the Intent Extras
searchIntent.putExtra(SearchManager.QUERY, query);
startActivityForResult(searchIntent, ACTIVITY_REQUEST_CODE);
}

Activity A 还是 B?你在哪里调用它?

额外信息 - 我目前是怎么做的 - 这会被删掉吗?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.menu_search);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(true);

} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
setupNewSearchView(searchItem, searchManager);
}

return true;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void setupNewSearchView(final MenuItem searchItem, SearchManager searchManager) {
android.widget.SearchView searchView = (android.widget.SearchView) searchItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(true);

}

最佳答案

首先在 manifest.xml 中创建 Activity(A) singleInstance/singleTop android:launchMode="singleInstance|singleTop"
然后使用 Activity(A) 中的 onNewIntent(Intent intent) 到 handleIntent(intent)

编辑:
ActivityA.java

@Override
protected void onNewIntent(Intent intent) {
handleIntent(intent);
}

请阅读此tutorial清楚地了解正在发生的事情

关于android - 从使用 SearchManager 启动的 Activity 中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com