J'utilise un TabActivity (Main)
avec 3 TabSpecs Je suis pour l'utiliser avec le contenu des 3 onglets TabA
, TabB
, TabC
par exemple.Mise à jour des vues des sous-activités de TabActivity de processus d'arrière-plan
Toutes ces activités utilisent des données communes onglet qui sont stockées dans SharedPreferences
Dans le Main
TabActivity
J'ai un menu d'options qui a une option de rafraîchissement.
@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();
...
}
}
cette actualisation utilise un AsyncTask
(updateCommonDataFromWeb) pour recharger les données communes à partir du Web.
J'ai besoin d'un moyen de dire aux 3 activités de l'onglet d'actualiser leurs vues et de reconstruire leur contenu à partir des données nouvellement téléchargées.
Lorsque les activités de l'onglet sont d'abord créés, ils chargent les données de SharedPreferences
comme ceci:
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", "");
}
}
Je pensais à faire une méthode commune sur chacune des activités onglet comme .... reloadViewData()
Je pensais que je pourrais peut-être utiliser le gestionnaire d'activité du Main
TabActivity
pour obtenir l'activité de l'onglet actuel comme ceci:
String tabTag = tabHost.getCurrentTabTag();
Activity activity = getLocalActivityManager().getActivity(tabTag);
# then call the reloadData() method of the tab activity
activity.reloadViewData();
Malheureusement, je ne peux pas obtenir cette approche au travail, tandis que activity
est l'instance correcte son un Activity
au lieu d'un TabA
, TabB
ou TabC
Peut-être que je suis complètement pris la mauvaise approche de la chose.
J'ai aussi beaucoup lu sur le fait de ne pas utiliser Activités pour le contenu des onglets à la place d'utiliser des vues. Cependant, je ne sais pas quelle vue utiliser pour remplacer mon <RelativeLayout />
car je ne peux pas utiliser mon R.layout. * En tant que vues.
Sonne comme une idée simple, vive, je vais essayer! – Rob