在另一个简单类中使用getApplicationContext(),而不是在MainActivity.java中

在另一个简单类中使用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,

我为我的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,
                "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!那封推荐信确实满足了我的第一印象!:)