在另一个简单类中使用getApplicationContext(),而不是在MainActivity.java中
我为我的Android应用程序创建了一个名为在另一个简单类中使用getApplicationContext(),而不是在MainActivity.java中,java,android,android-context,Java,Android,Android Context,我为我的Android应用程序创建了一个名为coreTuts的简单类。我已经完成了将它绑定到我的MainActivity.java,activity\u main.xml,诸如此类的工作,如下所示: public class coreTuts{ //Do a toast notification public void sampleToast(Context context) { Toast toast = Toast.makeText(context,
coreTuts
的简单类。我已经完成了将它绑定到我的MainActivity.java
,activity\u main.xml
,诸如此类的工作,如下所示:
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();
}
}
MainActivity.java
coreTuts tuts=新的coreTuts();
公共void displayToast(视图)
{
tuts.sampleToast();
}
您的Coretut应该如下所示
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());
}
注意:视图不能为空
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());
}
注意:视图不能为空,因为您的类
CoreTuts
不是从活动
或任何其他上下文
子类(是上下文
的子类)继承的,因此您无法以您尝试的方式访问您的上下文。您需要显式地将其传递给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);
}
由于您的类
CoreTuts
不是从Activity
继承的,也不是从任何其他Context
子类(是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);
}
在创建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();
}
在创建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();
}
您可以将Context实例作为参数传递给sampleToast()方法,比如sampleToast(Context-Context),我认为这个问题有很多问题。他们都说你需要把一个上下文对象传递给类才能得到它。例如,sampleToast(Context Context){…makeText(Context,…)}我已经查看了前三个答案,我的应用程序的上下文似乎总是从MainActivity.java获取其值。您可以将上下文实例作为参数传递给sampleToast()方法,比如sampleToast(Context Context Context)。我认为这个问题有很多问题。他们都说你需要把一个上下文对象传递给类才能得到它。例如,sampleToast(Context Context){…makeText(Context,…)}我已经查看了前三个答案,我的应用程序的上下文似乎总是从MainActivity.java获取其值。我有两个后续问题:我是否应该始终记住在
MainActivity.java
中,所有在我的应用程序上显示内容的方法都应该始终包含View
参数?在sampleToast()
中,可以将Context-Context
放置在方法中的任何其他位置吗?:)@不客气。1) 您不需要在内部包含该视图参数。您可以使用MainActivity.this(我的意思是当您需要上下文时)。2) 我认为无论你说什么,你都可以把它作为第二个论点或第三个论点传递。是的,你可以这样做。我有两个后续问题:我是否应该始终记住,在MainActivity.java
中,所有在我的应用程序上显示内容的方法都应该始终包含View
参数?在sampleToast()
中,可以将Context-Context
放置在方法中的任何其他位置吗?:)@不客气。1) 您不需要在内部包含该视图参数。您可以使用MainActivity.this(我的意思是当您需要上下文时)。2) 我想你的意思是,你可以把它作为第二个论点或第三个论点来传递。是的,你可以这样做。明白了,当我的类coreTuts没有从Activity或Context的子类继承任何内容时,必须在方法内部编写上下文
参数。如果我不将上下文作为参数用于其他任何事情,您会建议这种方法将上下文作为参数添加到我的方法中吗?:)对如果您不打算将上下文
用于其他任何内容,则无需保留对它的引用(实际上,由于活动的生命周期,它比看起来更复杂)。通过这种方式,您可以在需要时使用它。如果您想了解有关保存上下文引用的更多信息,可以开始查看。谢谢@peguerosdc!那封推荐信确实满足了我的第一印象!:)明白了,当我的类coreTuts没有从Activity或Context的子类继承任何内容时,必须在方法内部编写Context Context
参数。如果我不将上下文作为参数用于其他任何事情,您会建议这种方法将上下文作为参数添加到我的方法中吗?:)对如果您不打算将上下文
用于其他任何内容,则无需保留对它的引用(实际上,由于活动的生命周期,它比看起来更复杂)。通过这种方式,您可以在需要时使用它。如果您想了解有关保存上下文引用的更多信息,可以开始查看。谢谢@peguerosdc!那封推荐信确实满足了我的第一印象!:)