在另一个简单的 class 中使用 getApplicationContext(),而不是在 MainActivity.java 中
Using getApplicationContext() in another simple class, NOT in MainActivity.java
我为我的 Android 应用程序创建了一个简单的 class,名为 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();
}
}
我无法决定是应该在我的 Toast
上使用 getActivity().getApplicationContext()
还是只使用 getApplicationContext()
,因为这两个代码都不起作用。
事实上,这些是我的问题:
- 我理解 Android 中的环境有点像动物的栖息地。我这样看
getActivity()
和 getApplicationContext()
对吗?
- 如何让
getApplicationContext()
在另一个 class 中工作,以便我可以 运行 我的 toast
,或者这是否被允许?
谢谢!
你的 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());
}
注意:视图不能为空
因为您的 class CoreTuts
没有继承自 Activity
也没有继承任何其他 Context
subclass(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();
}
}
在你的 activity:
coreTuts tuts = new coreTuts();
public void displayToast(View view) {
// Pass your activity as the context
tuts.sampleToast(this);
}
在创建它的对象时将上下文传递给您的 coretuts class。你的 coretuts class 看起来像这样。
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 中创建此 class 的对象时,只需传递上下文
// 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();
}
我为我的 Android 应用程序创建了一个简单的 class,名为 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();
}
}
我无法决定是应该在我的 Toast
上使用 getActivity().getApplicationContext()
还是只使用 getApplicationContext()
,因为这两个代码都不起作用。
事实上,这些是我的问题:
- 我理解 Android 中的环境有点像动物的栖息地。我这样看
getActivity()
和getApplicationContext()
对吗? - 如何让
getApplicationContext()
在另一个 class 中工作,以便我可以 运行 我的toast
,或者这是否被允许?
谢谢!
你的 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());
}
注意:视图不能为空
因为您的 class CoreTuts
没有继承自 Activity
也没有继承任何其他 Context
subclass(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();
}
}
在你的 activity:
coreTuts tuts = new coreTuts();
public void displayToast(View view) {
// Pass your activity as the context
tuts.sampleToast(this);
}
在创建它的对象时将上下文传递给您的 coretuts class。你的 coretuts class 看起来像这样。
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 中创建此 class 的对象时,只需传递上下文
// 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();
}