2017-01-11 1 views
0

Je suis en train de passer une chaîne à partir d'une classe java statique séparée, une méthode dans mon Blankfragment.javaAndroid - Faire Toast de méthode statique

c'est la méthode à l'intérieur du blankFragment.java, le problème est qu'il ne peut pas accéder à getContext() qui n'est pas statique.

public static void ShowMessage(String message){ 
    Toast.makeText(getContext() ,message , Toast.LENGTH_LONG).show(); 
} 

Et l'appel de méthode dans la séparéeclasse statique java:

BlankFragment.ShowMessage(new String(body)); 

est-il un moyen de récupérer le contexte de l'extérieur et le transmettre comme paramètre? getContext() ne fonctionne pas, j'obtiens l'erreur "impossible de résoudre le symbole"

+0

Oui. Structurez votre param comme 'showMessage (String message, Context context)'. Lors de l'appel de la méthode, '.showMessage (new String (body), getApplicationContext())'. Pour fragment, utilisez 'getContext()' –

Répondre

5

Vous pouvez essayer de passer le contexte en paramètre. Puisque c'est un fragment, je vous recommande de vérifier les nulls!

public static void ShowMessage(Context context, String message){ 
    if (context == null) return; 
    Toast.makeText(context, message, Toast.LENGTH_LONG).show(); 
} 

BlankFragment.ShowMessage(getContext(), new String(body)); 

REMARQUE:

Je juste travaille avec des fragments et je déteste leur cycle de vie. Je ne suis pas tout à fait sûr pourquoi vous avez besoin d'une méthode statique impliquant le contexte, mais je recommande contre. Plutôt utiliser un Command pattern ou autre chose. Normalement, je trouve que jusqu'à ce que le fragment se soit «stabilisé», le contexte devient disponible.

+0

L'appel suivant: BlankFragment.ShowMessage (getContext(), new String (body)); Sera appelé à partir d'une javaclass séparée, donc je n'ai pas accès à cette méthode à partir de là, je reçois simplement l'erreur "Impossible de résoudre le symbole" – Jon

+0

Si vous utilisez la méthode dans une classe Fragment, essayez de vérifier ma réponse ... vous devrait être capable d'atteindre l'activité dans la classe Fragment. –

+0

La classe que j'appelle BlankFragment.ShowMessage (getContext(), new String (body)); from est une classe java statique implémentant l'interface rabbitmq defaultconsumer. ce n'est pas un fragment ou une activité – Jon

0

Si vous utilisez cette méthode (ou si vous l'appelez) un fragment, fragment a accès à l'activité avec getActivity();. Passez-le en paramètre.

Mais si vous utilisez en fait la méthode dans le Fragment (l'affichage message Toast), vous pouvez essayer d'utiliser getActivity() au lieu de getContext().

+0

Ce n'est ni l'un ni l'autre, j'appelle BlankFragment.ShowMessage (getContext(), new String (body)); à partir d'une classe Java statique implémentant le consommateur par défaut RabbitMQ. – Jon