android - TabActivity 将附加信息传递给子 Intent

标签 android

我有三个 Activity :

Activity A - 显示来自网站的数据列表。从这个 Activity 中,您可以执行一个操作,将一些东西添加到这个列表中( Activity B)。

Activity B - 这是向网站添加数据的 Activity 。成功完成后,此 Activity 将需要告诉 Activity A 刷新其列表。

Activity T - 包含 Activity A 的 TabHost。

我的问题是:

Activity B 需要告诉 Activity A 刷新,但它的 Intent 必须是 Activity T,因为我希望 TabHost 显示 Activity A。

//ActivityB.class
Intent myIntent = new Intent(v.getContext(), ActivityT.class);
myIntent.putExtra("target", "ActivityA");
myIntent.putExtra("refreshData", true);
startActivityForResult(myIntent, 0);

我想我可以使用 TabHost 作为中介,如果设置了额外的内容,就将它们传递给 Activity A,就像这样:

//ActivityT.class
Bundle extras = getIntent().getExtras();

// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, ActivityA.class);

// Check to see if we want to pass our bundle through to the activity
if (extras != null && extras.getString("target").equals("activityA")) {
     intent.putExtras(extras);
}

// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("Tab1").setIndicator("Tab1",
            res.getDrawable(R.drawable.ic_tab_tab1)).setContent(intent);
tabHost.addTab(spec);

这很好用,除了当我将选项卡更改为另一个选项卡并更改回来时,额外内容会一次又一次地传递 - 这会导致我的选项卡每次都刷新其数据,即使我不再来自 Activity B。这是因为 TabActivity 不会在选项卡更改时重新创建,因此额外内容总是传递给子 Intent 。

那么,我如何才能告诉 Activity A 仅从 Activity B 刷新,但仍然让 TabHost 显示出来?

最佳答案

我最终暴力解决了这个问题,复制了 TabHost、TabActivity 和 TabWidget 代码,并根据我的需要对其进行了自定义以解决这个问题。这不是我引以为豪的事情,但它确实起到了作用。

事实证明它也有些用处,因为我做了一些其他小的调整,以便更容易地做其他事情。

关于android - TabActivity 将附加信息传递给子 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341482/

相关文章:

android - 手动结束 IntentService 工作线程

android - Android Studio 2,2 中的错误

android - 我如何使用注释处理器检查整个源代码树?

android - 9 补丁在 ICS 中不起作用

安卓NDK。 Eclipse 项目属性中没有 C/C++ 部分

java - 当 EditText 输入为空时 Android 应用程序崩溃

java - 如何区分猛击和触摸?

android - 设置TableRow下TextView的layout_weight

android - 在android中实现地理定位

Android Studio 主题在应用程序中不起作用