getApplicationContext () Fehler Android

8

Ich habe ein Fragment, mit dem ein Benutzer eine Nachricht und eine Telefonnummer eingeben kann, an die die Nachricht zugestellt wird. Ich bekomme einen Fehler "kann Methode getApplicationContext () nicht auflösen" Ich habe die Antwort hier die Methode untersucht getApplicationContext () ist nicht definiert , aber es hat mir nicht geholfen, vielleicht implementiere ich es falsch, aber ich bin mir nicht sicher! Dieser Code funktioniert gut als eine Aktivität, aber nicht als ein Fragment.

FragmentTab1-Klasse

%Vor%     
user3375184 17.02.2015, 13:24
quelle

7 Antworten

32

Die Methode getApplicationContext () existiert nicht in der Klasse Fragment . Es existiert jedoch in der Klasse Activity , sodass Sie getActivity().getApplicationContext() verwenden können, um den Kontext innerhalb eines Fragmentobjekts abzurufen. (Angenommen, das Fragment ist an eine Aktivität angehängt, so dass getActivity() ein Nicht-Null-Objekt zurückgibt, das normalerweise wahr ist)

    
CurlyCorvus 17.02.2015, 13:29
quelle
5

Verwenden Sie getActivity().getApplicationContext();

    
Etun 17.02.2015 13:27
quelle
1

Sie sollten den in der Fragmentaktivität verfügbaren Anwendungskontext verwenden

%Vor%

Sie sollten den getActivity() hier nicht als Kontext verwenden, da Toast länger leben kann als die Aktivität, die ihn zeigte (Home-Schaltfläche wurde gedrückt, eine andere Aktivität wurde gestartet usw.).

Ссылка

    
Gorcyn 17.02.2015 13:37
quelle
1

Vielleicht ist es genug mit getActivity () als Aktivität erweitert Kontext.

Wie auch immer, denken Sie bitte darüber nach, ob Sie einen Kontext mit dem Lebenszyklus benötigen, der von Ihrem Aktivitätskontext getrennt ist um zu wissen, ob Sie getActivity (), getApplicationContext () oder getActivity () verwenden müssen.

Siehe this thread für weitere Informationen.

    
antonio 17.02.2015 13:38
quelle
1

Sie müssen in einer Nicht-Aktivitätsklasse einen Konstruktor erstellen, der einen Kontext für ein Argument verwendet, und in Ihrer Aktivitätsklasse müssen Sie den Kontext für die Deklaration eines Objekts übergeben, wie folgt:

%Vor%     
Badr El Amrani 04.08.2016 02:04
quelle
0

Siehe die Antwort hier: mit Kontext in Fragment .

Rufen Sie einfach getActivity() auf, stellen Sie sicher, dass es nicht null ist, und rufen Sie getApplicationContext() auf.

    
Jos van Egmond 17.02.2015 13:30
quelle
0

getApplicationContext() existierte nicht oder Sie können sagen, dass das nicht in der Fragment-Klasse definiert ist, was bedeutet, dass Sie nicht direkt innerhalb der Fragment-Klasse darauf zugreifen können.

Also ist die Lösung das anstatt so zu machen

%Vor%

Sie sollten die getActivity() Methode wie folgt verwenden

%Vor%

Ich hoffe, es hilft.

    
Arsh Kaushal 29.09.2015 04:15
quelle

Tags und Links