2012-07-13 8 views
6

Powiel możliwe:
How do I make a toast from a non activity class?Jak wyświetlić komunikat toast z klasy, że nie rozciąga aktywny

Jak mogę stworzyć i pokazać Toast wiadomość z klasy, która nie rozszerzyła klasy Activity? Używam tej klasy w innej klasie, która jest rozszerzona o Activity.

+0

u oznacza liek ten Toast.makeText (getApplicationContext(), "Błąd serwera nie odpowiada" + e.getMessage(), Toast.LENGTH_SHORT) .pokazać(); – user1513889

+1

pls po kodu, aby wiedzieć z łatwością. – AkashG

+0

Wyświetlanie toastu wymaga odwołania do obiektu kontekstowego. Możesz przekazać obiekt kontekstu lub działania do klasy, w której chcesz utworzyć toast. – param

Odpowiedz

12

Potrzebujesz odniesienia kontekstowego. można wyraźne podanie jako parametr podczas tworzenia klasy

public class MyClass { 

    private static Context context; 
    public MyClass(Context c) { 
    context = c; 
    } 

    public static void showToastMethod() { 
     Toast.makeText(context, "mymessage ", Toast.LENGTH_SHORT).show(); 
    } 

} 
+0

Moja metoda, która służy do pokazywania tostów w try catch catch, jest statyczna – user1513889

+0

zobacz edycję ... – Blackbelt

+1

To wydaje się świetnym sposobem na wyciekanie kontekstu. Zamiast tego podaj kontekst jako argument do 'showToastMethod()' i użyj go od tego miejsca. Trzymanie stałego odniesienia do niego może być złe, jeśli instancja twojej klasy żyje dłużej niż działanie/usługa/.., do której należy kontekst. Uczynienie tego odniesienia statycznego nie czyni go lepszym, raczej gorszym. –

4

można przekazać kontekst tej działalności do klasy przez przepuszczenie wartość klasy nonActivity

przykład:

new NonActivityClass(Activityclass.this) ; 

i jak w powyżej odpowiedź

new MyClass(ActivityClass.this); 

In NonActivityClass

public class NonActivityClass { 

    public NonActivityClass (Context context) { 

     Toast.makeText(context, "mymessage ", Toast.LENGTH_SHORT).show(); 
    } 

} 

Nadzieja to działa dla Ciebie ...

Powiązane problemy