如何从非活动类中显示吐司

时间:2014-08-09 09:21:29

标签: java android

我想调用一个在showtoast类中显示toast消息的函数,该函数扩展来自数据库类的活动,这是一个非活动类。但它显示错误。

我该怎么做?

public class database {

    showtoast objshowtoast = new showtoast();

    objshowtoast.toast ();
}

public class showtoast extends Activity {

    protected void onCreate() {
    }

    public toast() {
        Toast.makeText(showtoast.this, "hi toast executed!!", Toast.LENGTH_LONG).show();
    }
}

3 个答案:

答案 0 :(得分:0)

应为public void toast()

没有返回类型,它被解释为构造函数。

此外,您无法使用new创建活动。

您必须使用当前活动的方法创建一个Intent并创建一个活动。

// 'this' is the current activity
this.startActivity(intent);

答案 1 :(得分:0)

您发布的代码存在很多问题但我没有涉及到这些问题。如果手头的任务只是显示来自非活动类的祝酒词,那么您无需为此创建活动。

您只需要引用应用程序上下文并传递它以创建一个Toast。您可以将应用程序上下文作为构造函数参数传递给您的非活动类。

答案 2 :(得分:0)

为什么不用构造函数传递上下文? 像

public class database {

    Context _mContext;

    public database(Context c)
    {
        _mContext = c;
    }

    Toast.makeText(_mContext, "Hello Android", 100).show();

}

public class showtoast extends Activity {

    protected void onCreate() {

       database db = new database(showtoast.this);   // calling the constructor and passing the context.
    }

    public toast() {
        Toast.makeText(showtoast.this, "hi toast executed!!", Toast.LENGTH_LONG).show();
    }
}

修改

您可以在toast

中编写这样的showtoast方法
public static void toast(Context c)
{

   Toast.makeText(c, "Hello Toast is displaying", 100).show();
}

等活动中调用此方法

toast(showtoast .this);

database

showtoast.toast(_mContext);

我建议您不要使用方法来显示Toast。它只是一行代码。你为什么需要一种方法?