我想调用一个在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();
}
}
答案 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。它只是一行代码。你为什么需要一种方法?