2012-07-13 65 views
6

可能重複:
How do I make a toast from a non activity class?如何顯示在從類敬酒消息不延長活動

如何創建並顯示從類Toast消息,其不擴展Activity類?我在另一個課程中使用這個課程,這個課程由Activity擴展。

+0

ü意味着liek這 Toast.makeText(getApplicationContext(), 「錯誤服務器沒有響應」 + e.getMessage(), Toast.LENGTH_SHORT) 。顯示(); – user1513889 2012-07-13 08:29:57

+1

請發佈代碼輕鬆知道。 – AkashG 2012-07-13 08:31:12

+0

顯示Toast需要對Context對象的引用。您可以將上下文或活動對象傳遞到要創建Toast的類。 – param 2012-07-13 08:37:22

回答

12

您需要一個上下文參考。你可以明確的通作爲參數,當你創建類

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

我在try catch塊中用來顯示烤麪包的方法是靜態的 – user1513889 2012-07-13 08:37:15

+0

看到編輯... – Blackbelt 2012-07-13 08:40:42

+1

這似乎是一個泄漏上下文的好方法。而是將上下文作爲參數傳遞給'showToastMethod()'並從那裏使用它。如果您的課程實例的壽命長於上下文所屬的活動/服務/ ..,則永久引用該課程可能會很糟糕。使參考靜態不會使它更好,更糟糕的是。 – 2012-07-13 09:59:00

4

你可以通過值nonActivity類傳遞活動類的背景下

例如:

new NonActivityClass(Activityclass.this) ; 

,並在以上回答

new MyClass(ActivityClass.this); 

In NonActivityClass

public class NonActivityClass { 

    public NonActivityClass (Context context) { 

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

} 

希望這對你的作品...