722 votes

Contextuel à l'aide du fragment

Comment puis-je obtenir le contexte dans un fragment? J'ai besoin d'utiliser ma base de données dont le constructeur prend dans le contexte, mais getApplicationContext() et FragmentClass.this ne fonctionnent pas alors que puis-je faire?

la base de données constructeur

public Database(Context ctx) 
{
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

137voto

iambox Points 611

Pour faire comme la réponse ci-dessus, vous pouvez remplacer l' attachActivity méthode de fragment:

public static class DummySectionFragment extends Fragment{
...
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        DBHelper = new DatabaseHelper(activity);
    }
}

27voto

Amerdroid Points 101

La méthode la plus simple et la plus précise pour obtenir le contexte du fragment que j'ai trouvé est de le faire directement à partir de la ViewGroup lorsque vous appelez onCreateView méthode au moins, ici, vous êtes sûr de ne pas obtenir la valeur null pour getActivity()

public class Animal extends Fragment { 
  Context thiscontext;
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  {
    thiscontext = container.getContext();

25voto

Ankur Chaudhary Points 303

Toujours utiliser getActivity() méthode pour obtenir le cadre de votre activité, mais rappelez-vous toujours une chose que les fragments sont légèrement instable et getActivity retourne null quelques fois donc toujours vérifier isAdded() la méthode de fragment avant de se contexte par getActivity().

Merci

12voto

taran mahal Points 63
@Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);
    context=activity;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X