我为我的Android应用程序创建了一个名为coreTuts
的简单类。我已完成将其绑定到我的MainActivity.java
,activity_main.xml
,依此类推:
MainActivity.java
coreTuts tuts = new coreTuts();
public void displayToast(View view)
{
tuts.sampleToast();
}

coreTuts.java
的样子:
coreTuts.java
public class coreTuts{
//Do a toast notification
public void sampleToast()
{
Toast toast = Toast.makeText(getActivity().getApplicationContext(),
"This is a message displayed in a Toast",
Toast.LENGTH_SHORT);
toast.show();
}
}

我无法决定是否应该在getActivity().getApplicationContext()
上使用getApplicationContext()
或Toast
,因为任何代码都无效。
事实上,这些是我的问题:
getActivity()
和getApplicationContext()
,我是对的吗?getApplicationContext()
在另一个班级中工作,以便我可以运行toast
,或者甚至是允许的?谢谢!
答案 0 :(得分:2)
你的coreTuts应该如下所示
public class coreTuts{
//Do a toast notification
public void sampleToast(Context context)
{
Toast toast = Toast.makeText(context,
"This is a message displayed in a Toast",
Toast.LENGTH_SHORT);
toast.show();
}
}
你可以像下面一样调用它,
coreTuts tuts = new coreTuts();
public void displayToast(View view)
{
tuts.sampleToast(view.getContext());
}
注意:视图不能为空
答案 1 :(得分:1)
由于您的班级CoreTuts
不是继承自Activity
,也未继承任何其他Context
子类(Activity是Context
的孩子),您可以'以您尝试的方式访问您的上下文。您需要明确地将其传递给sampleToast
方法,如下所示:
public class coreTuts{
//Do a toast notification
public void sampleToast(Context context) {
Toast toast = Toast.makeText(context,
"This is a message displayed in a Toast",
Toast.LENGTH_SHORT);
toast.show();
}
}
在你的活动中:
coreTuts tuts = new coreTuts();
public void displayToast(View view) {
// Pass your activity as the context
tuts.sampleToast(this);
}
答案 2 :(得分:1)
在您创建对象时,将上下文传递给您的coretuts类。你的coretuts类看起来像这样。
public class coreTuts{
private Context mContext;
public coreTuts(Context context) {
mContext = context;
}
//Do a toast notification
public void sampleToast()
{
Toast toast = Toast.makeText(mContext,
"This is a message displayed in a Toast",
Toast.LENGTH_SHORT);
toast.show();
}
}
现在,当您在MainActivity中创建此类的对象时,只需传递上下文
// Pass your context. You can also use getApplicationContext() instead of MainActivity.this
coreTuts tuts = new coreTuts(MainActivity.this);
// You don't really need a view argument for this method.
// It could just be public void displayToast() {...}
public void displayToast(View view)
{
tuts.sampleToast();
}