たとえば、 3つのタブのコンテンツにインテントを使用しTabActivity (Main)
ている3つのTabSpecを使用してい
ます。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
、正しいインスタンスは、、またはActivity
TabA
TabB
TabC
たぶん私は全体に対して完全に間違ったアプローチをとっています。
また、ビューを使用する代わりにタブコンテンツにアクティビティを使用しないことについてもたくさん読みました。<RelativeLayout />
ただし、R.layout。*をビューとして使用できないため、どのビューを使用して置換するかわかりません。