il est possible de passer une variable de contexte à un DialogFragment?
j'ai utilisé ce code dans la boîte de dialogue pour passer une chaîne:
public static ConfirmDialog newInstance( String f) {
ConfirmDialog d = new ConfirmDialog();
Bundle args = new Bundle();
args.putString("FILE_NAME", f);
d.setArguments(args);
return d;
}
mais je ne trouve aucune fonction comme putString pour passer le contexte. C'est possible de faire ça?
Votre DialogFragment
a une méthode très pratique pour obtenir une instance Context
:
getActivity()
Fragment#getActivity()
renverra l'instance de Activity
(qui est une Context
) à laquelle la Fragment
est attachée. Utilisez-le après l'appel du onAttach()
du fragment. Le graphique ci-dessous illustre le cycle de vie Fragment
, comme vous pouvez le constater, utiliser getActivity()
de onCreate()
à onDestroy()
doit être un appel valide.
Pour plus d'informations, lisez la Fragment
documentation
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context=activity;
}
Besoin d'utiliser la méthode onAttach: pour le dialogue Fragment
onAttach (activité d'activité) est maintenant obsolète,
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
utilisation onAttach (contexte de contexte) au lieu
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
utiliser comme ceci:
public class Dialog extends DialogFragment implements OnClickListener {
public void onClick(View v) {
switch (v.getId()) {
case R.id.message: {
this.startActivity(new Intent(context, Login.class));
//or use getActivity() instead of context
}
break;
}
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context=activity;
}
}