【发布时间】:2010-07-25 16:26:50
【问题描述】:
我正在使用带有 3 个 TabSpecs 的 TabActivity (Main)
我正在为 3 个选项卡的内容使用 Intents
以TabA、TabB、TabC 为例。
所有这些选项卡活动都使用存储在SharedPreferences 中的公共数据
在Main TabActivity 我有一个选项菜单,其中有一个刷新选项。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.refresh_menu:
new updateCommonDataFromWeb().execute();
...
}
}
此刷新使用AsyncTask (updateCommonDataFromWeb) 从网络重新加载公共数据。
我需要一种方法来告诉 3 个选项卡活动刷新它们的视图并从新下载的数据中重建它们的内容。
第一次创建选项卡活动时,它们会从 SharedPreferences 加载数据,如下所示:
public class TabA extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.taba);
SharedPreferences prefs = getSharedPreferences(this.getString(R.string.prefs_name), 0);
String usage_data = prefs.getString("common_data", "");
}
}
我想过在每个选项卡活动上制作一个通用方法
喜欢....reloadViewData()
我想也许我可以使用 Main TabActivity 中的活动管理器来获取当前选项卡的活动,如下所示:
String tabTag = tabHost.getCurrentTabTag();
Activity activity = getLocalActivityManager().getActivity(tabTag);
# then call the reloadData() method of the tab activity
activity.reloadViewData();
不幸的是,我无法使用这种方法,而 activity 是正确的实例,它是 Activity 而不是 TabA、TabB 或 TabC
也许我对整个事情采取了完全错误的方法。
我还阅读了很多关于不将活动用于选项卡内容而不是使用视图的信息。
但是我不知道用什么视图来替换我的<RelativeLayout />,因为我不能使用我的 R.layout.* 作为视图。
【问题讨论】:
标签: android views android-activity tabactivity