【发布时间】:2010-12-03 00:40:44
【问题描述】:
我有三个活动:
活动 A - 显示来自网站的数据列表。在此活动中,您可以执行一项操作,将某些内容添加到此列表(活动 B)。
活动 B - 这是向网站添加数据的活动。成功完成后,此活动将需要通知活动 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 显示?
【问题讨论】:
-
这样的小任务,广播是不是有点重任?它们通常不是用来监听其他应用/服务广播的事件/意图吗?
标签: android