web-dev-qa-db-fra.com

passage de contexte en tant qu'argument de DialogFragment

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?

28
giozh

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.

enter image description here

Pour plus d'informations, lisez la Fragment documentation

59
A--C
@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

6
taran mahal

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);
}
1
user3323765

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;
    }
}
0
anand krish