Я использую TabActivity (Main)
с 3 TabSpecs. Я использую Intents для содержимого, например, 3 вкладок 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. * В качестве представлений.