2013-12-23 10 views
7

Ich habe mehrere Klassen in meiner Anwendung. Einige sind Aktivitäten, Services und Pure Java-Klassen. Ich weiß, dass ich eine Toast-Nachricht innerhalb einer Aktivität anzeigen kann, aber ich möchte einen Toast aus einer reinen Java-Klasse anzeigen.Anzeigen einer Toast-Nachricht aus der Anwendungsklasse

In der Java-Klasse übergebe ich einen Kontext in den Konstruktor, aber das scheint nicht den Toast zu zeigen.

Ich habe eine Methode in der Application-Klasse erstellt, die einen String als Argument verwendet, in der Hoffnung, ich könnte einen Toast mit dem Anwendungskontext generieren, auch hier keine Freude.

Wie kann ich einen Toast aus einer Klasse erzeugen, die keine Dienstleistung oder Aktivität ist usw.

public class LoginValidate{ 

public LoginValidate(Context context) { 

     this.context = context; 

     nfcscannerapplication = (NfcScannerApplication) context 
       .getApplicationContext(); 


    } 

public void someMethod(){ 

nfcscannerapplication.showToastMessage(result); 

} 

} 

.

/// dann in meiner Anwendungsklasse

public void showToastMessage(String message){ 

      Toast.makeText(this.getApplictionContext(), "Encountered a problem with sending tag: " + message, Toast.LENGTH_LONG).show(); 

    } 
+0

Aktie Code – Blackbelt

+0

@blackbelt – turtleboy

+0

bearbeitet @turtleboy Sie meine Lösung versucht haben ?? –

Antwort

2

schreibt diese Methode in Ihrer Anwendungsklasse. Sie müssen nur eine Nachricht in Parameter von einer beliebigen Aktivität übergeben.

public void showToast(String message) 
{ 
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); 
} 
+0

ich habe versucht, dass danke – turtleboy

+0

das funktioniert für mich .. –

+0

Hallo, auch ich rufe nicht die Toast-Nachricht von innerhalb einer Aktivität. Ich rufe den Toast aus einer einfachen Java-Klasse. Deshalb wird es nicht angezeigt. – turtleboy

6

Erste Anwendung Klasse wie folgt erstellen ..

public class ApplicationContext extends Application { 

/** Instance of the current application. */ 
private static ApplicationContext instance; 

/** 
* Constructor. 
*/ 
public ApplicationContext() { 
    instance = this; 
} 

/** 
* Gets the application context. 
* 
* @return the application context 
*/ 
public static Context getContext() { 
    if (instance == null) { 
     instance = new ApplicationContext(); 
    } 
    return instance; 
} 

/** 
    * display toast message 
    * 
    * @param data 
    */ 
    public static void showToast(String data) { 
     Toast.makeText(getContext(), data, 
       Toast.LENGTH_SHORT).show(); 
    } 

} 

nennen diese Methode von einer beliebigen Klasse wie ApplicationContext.showToast("your string");

vorsichtig sein Kontextobjekt undichte ..

+0

habe diesen Fehler: '' 'java.lang.NullPointerException: Versuch, die virtuelle Methode 'android.content.res.Resources android.content.Context.getResources()' für eine Nullobjekt-Referenz''' aufzurufen. – kangear

+0

@kangear Ihre Zeichenkette ist null..wie übergeben Sie die Zeichenkette ?? –

4

Es gibt zwei Möglichkeiten, die Sie tun können, wenn Sie einen gültigen Kontext haben, können Sie es tun, wie @CapDroid schrieb:

public static void showToastWithTitle(String title) { 
    Toast.makeText(getApplicationContext(), title, Toast.LENGTH_LONG).show(); 
} 

wenn Sie dies nicht tun, können Sie einen Kontext senden als auch,

public static void showToastWithTitleAndContext(Context context, String title) { 
    Toast.makeText(context, title, Toast.LENGTH_LONG).show(); 
} 

Beachten Sie, dass Sie einen statischen Kontext in Ihrem Application.java definieren und verwenden Sie es Shoh Toast zu nennen.

hoffe das hilft.

0
Toast.makeText(getActivity(), "Index....."+index, Toast.LENGTH_LONG).show();