Récupérer Contexte à partir d'un fragment
J'ai créé une classe pour récupérer les commentaires d'un encodage JSON à partir d'un fichier PHP. Cette classe, s'étend de l'AsyncTask:
public class RecuperarComentarisFoto extends AsyncTask<String, String, String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(????);
pDialog.setMessage("Creating Product..");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
//TODO Auto-generated method stub
return null;
}
@Override
protected void onPostExecute(String result) {
//TODO Auto-generated method stub
super.onPostExecute(result);
}
}
Comme vous pouvez le voir, j'essaie de montrer un ProgressDialog tandis que le "doInBackground" proccess de travail. Mais progressDialog constructeur, demande un Contexte, et je ne sais pas comment faire pour les fournir.
Je suis à l'appel de cette classe à partir d'un Fragment, donc je ne peux pas accéder au contexte comme celui-ci:
pDialog = new ProgressDialog(MyFragmentA.context);
Le "principal" acitivité est appelé: AndroidViewPagerActivity qui s'étend FragmentActivity.
(En principal, je veux dire que c'est celle qui est la création d'onglets, et la gestion de la navigation entre eux.)
Voici le code:
public class AndroidViewPagerActivity extends FragmentActivity {
ViewPager mViewPager;
TabsAdapter mTabsAdapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_HOME);
bar.hide();
mTabsAdapter = new TabsAdapter(this, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText("Fragment A"), MyFragmentA.class, null);
if (savedInstanceState != null) {
bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
}
}
Comment puis-je accéder au contexte? Lequel dois-je utiliser? "AndroidViewPagerActivity" contexte? Alors, comment puis-je accéder à son contexte, à partir d'un fragment?
Merci.
Sergi
OriginalL'auteur Reinherd | 2013-01-04
Vous devez vous connecter pour publier un commentaire.
Utilisation
getActivity()
à l'intérieur de laFragment
pour obtenir unContext
que vous pouvez passer le long. Qui fonctionne, commeActivity
hérite deContext
.Comme alternative, vous pouvez utiliser
getApplicationContext()
pour obtenir leContext
.L'appel de getActivity() à l'intérieur du fragment peut entraîner NullPointerException quand utilisé à grande échelle pour certains appareils. Cela se produit lorsque l'appel est effectué avant le fragment sont attachées à l'activité. Il se traduit également par des fuites de mémoire qui peut être mortelle et difficile à trouver. Aller à travers pour obtenir une meilleure compréhension. android-developers.googleblog.com/2009/01/...
OriginalL'auteur Heiko Rupp
Ok, maintenant je sais quelque chose de nouveau:
Vous faites cela en incluant dans votre code dans le fragment ("l'enfant").
Alors, une fois que vous avez le contexte, vous passer. Dans mon cas, j'ai dû passer un AsyncTask classe, afin que je puisse afficher une boîte de dialogue.
Et pour finir, sur le "RecuperarComentarisFoto" de la classe, j'ai créé un constructeur. Comme je l'ai lu, c'est ok pour le faire de cette façon.
Et de la magie:
Tout cela se termine par:
OriginalL'auteur Reinherd
@heiko-rupp la réponse est dépassée,
Fragment.getContext()
a été introduit dans les Fragments de l'API de 23.À le passer autour du fragment que vous avez à utiliser, comme la
this.getContext()
https://developer.android.com/reference/android/app/Fragment.html#getContext() qui, selon les documentations juste
OriginalL'auteur ishandutta2007
FragmentActivity cela vous donne le contexte de l'activité, puis vous pouvez passer à votre AsyncTask.
OriginalL'auteur Munish Katoch