我正在使用TabActivity (Main)
带有 3 个 TabSpecs 的 a 我正在使用 Intents 作为 3 个 Tabs 的内容
,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) 从 Web 重新加载公共数据。
我需要一种方法来告诉 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
正确的实例是它的 anActivity
而不是 a TabA
,TabB
或者TabC
也许我对整件事完全采取了错误的方法。
我还阅读了很多关于不将活动用于选项卡内容而不是使用视图的信息。但是我不知道用什么视图来替换我<RelativeLayout />
的,因为我不能使用我的 R.layout.* 作为视图。