gpt4 book ai didi

android - 在TabActivity 中分别搜索tab 中的每个activity 有什么好的解决方案吗?

转载 作者:太空狗 更新时间:2023-10-29 12:57:12 26 4
gpt4 key购买 nike

我的 Activity 导航有问题,搜索效果很好。

Activity 层次结构如下所示:

                              /  MyListActivityA -- ItemActivityA
MainActivity -- MyTabActivity -- MyListActivityB -- ItemActivityB
\ MyListActivityB -- ItemActivityC

TabActivity 中的选项卡是使用 IntentsMyListActivity 创建的。

MyListActivities 在 list 中声明如下:

    <activity
android:name=".views.OrderListView">
<intent-filter>
<action
android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable_orders" />
</activity>

每个 MyListActivity 都有自己的 SearchRecentSuggestionsProvider。

第一个解决的问题

当对任何 MyListActivity 调用搜索时,我得到了 MyTabActivity 的 Activity 。因此实现了重定向到 MyTabActivity
MyListActivity 的 onCreate() 中检查 Intent 操作。如果是

Intent.ACTION_SEARCH

然后启动 TabActivity 并结束当前,如下所示:

    if(Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
intent.setClass(context, MyTabActivity.class);
intent.setAction(MyTabActivity.ACTION_SEARCH_PROXY);

Bundle appData = intent.getBundleExtra(SearchManager.APP_DATA);

if(appData != null) {
intent.putExtras(appData);
}

intent.putExtra(Constants.ACTIVITY_TYPE, activityType);
intent.putExtra(ActivityTabView.EXTRA_SEARCH_QUERY, query);

context.startActivity(intent);
context.finish();
}

MyListActivity找到

ActivityTabView.EXTRA_SEARCH_QUERY

它在列表中进行搜索查询。并解决了问题。

第二个解决的问题

点击“后退”按钮清除搜索查询 - 没关系。但再次点击“后退”会显示过去的搜索。

这就是我将 noHistory 放入 MyTabActivity 的原因:

<activity
android:name=".views.MyTabActivity"
android:noHistory="true">
</activity>

第三个​​ Unresolved 问题

现在,例如,从 MyListActivityA 转到 ItemActivityA 并单击“返回”重定向到 MainActivity。由于 noHistory 参数,我无法返回 MyTabActivity

对于tab中的每个activity分别在TabActivity中使用Android搜索有什么好的解决方案吗?

最佳答案

我推荐阅读 Tasks and Back Stack .它让我更好地理解了 android 中的 Activity 堆栈。

我的解决方案:

Invoked Quick Search Dialog 启动调用它的 Activity ,在本例中为 MyListActivity。这使得 TabActivity 消失了,这就是为什么没有可见的 TabWidget。因此在 MyListActivity 中实现了到 MyTabActivity 的重定向(参见第一个解决的问题)。 MyTabActivity 只是将带有搜索查询的额外内容重定向到特定 MyListActivity 的 Intent 中。

您现在要做的就是添加一行。在启动 MyTabActivity 的 Intent 上设置 FLAG_ACTIVITY_CLEAR_TOP 标志。

if(Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
intent.setClass(context, MyTabActivity.class);
intent.setAction(MyTabActivity.ACTION_SEARCH_PROXY);

Bundle appData = intent.getBundleExtra(SearchManager.APP_DATA);

if(appData != null) {
intent.putExtras(appData);
}

intent.putExtra(Constants.ACTIVITY_TYPE, activityType);
intent.putExtra(ActivityTabView.EXTRA_SEARCH_QUERY, query);

//added line
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

context.startActivity(intent);
context.finish();
}

然后保留正常的 Activity 导航。

关于android - 在TabActivity 中分别搜索tab 中的每个activity 有什么好的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093539/

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