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

时间:2015-06-10 02:36:07

标签: java android android-context

我为我的Android应用程序创建了一个名为coreTuts的简单类。我已完成将其绑定到我的MainActivity.javaactivity_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,因为任何代码都无效。

事实上,这些是我的问题:

  1. 我理解Android中的背景有点像动物的栖息地。如果我以这样的方式看getActivity()getApplicationContext(),我是对的吗?
  2. 如何让getApplicationContext()在另一个班级中工作,以便我可以运行toast,或者甚至是允许的?
  3. 谢谢!

3 个答案:

答案 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子类(ActivityContext的孩子),您可以'以您尝试的方式访问您的上下文。您需要明确地将其传递给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();
}