我有三个 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/