2012-07-13 61 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(); 
    } 

} 

希望这对你的作品...