2017-03-21 1 views
1

Ich möchte eine globale shortToast und longToast Verfahren zu schaffen, in allen anderen Aktivitäten dynamisch zu verwenden, die ich habe, so habe ich nicht die Toast-Methode in jeder Aktivität zu definieren.Erstellen Sie eine globale Toast-Methode, um sie für alle Aktivitäten zu verwenden?

Ich habe dies versucht, aber Android Studio sagt mir, dass dies ein Leck Speicher:

public static Activity thisActivity = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    thisActivity = this;  
} 

public static void shortToast() 
{  
    Toast.makeText(thisActivity, "message" , Toast.LENGTH_SHORT).show(); 
} 

public static void longToast() 
{  
    Toast.makeText(thisActivity, "message" , Toast.LENGTH_LONG).show(); 
} 

Was kann ich stattdessen tun, um dieses Ziel zu erreichen, ein globalen Toast Verfahren mit (ohne Speicherverlust)?

Antwort

1

eine Utils Klasse erstellen:

public class Utils { 

    public static void showToast(String msg, Context ctx) { 
     Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show(); 
    } 
} 

es von Aktivität verwenden:

Utils.showToast("Message", this); 

Von Fragment:

Utils.showToast("Message", getActivity()); 
2

Übergeben Sie die Activity als Parameter an und longToast().

Oder setzen diese Methoden in einer Unterklasse von Activity, und haben alle Ihre Aktivitäten erben von ihm. Dann können Sie loswerden das static Stichwort von den Methoden erhalten und das thisActivity Feldes und einfach this verwenden.

Verwandte Themen