如何成功地在全局声明变量,问题与上下文
问题描述:
我正在关注如何将活动中经常使用的函数放在一个地方的教程。如何成功地在全局声明变量,问题与上下文
例如,在我的项目中出现的一条toast
消息,而不是在每个活动中都具有该功能,只需在一个位置调用GlobalFunctions.java
即可。
所以,我用简单的功能得到它,例如,在GlobalFunctions.java
:
public class GlobalFunctions {
public void simpleMessage() {
System.out.println("simpleMessage text goes here");
}
}
而且我这样称呼它从Activity1
:
GlobalFunctions simplemessage = new GlobalFunctions();
simplemessage.simpleMessage();
但怎么样? :
public class GlobalFunctions {
public void simpleMessage() {
Toast.makeText(getApplicationContext(), "simpleMessage text goes here", Toast.LENGTH_LONG).show();
}
}
我已经看了几个职位,包括getApplicationContext() error Android并不管我摆在Toast
的Context
部分,我得到了Cannot resolve method
消息。如果在这个问题上有任何有关傻瓜的好教程,我会很感激。
答
的关键是static
。
静态值允许您在整个项目中使用静态methods
variables
..等等。
您可以使用下面的概念:
public static class GlobalFunctions {
public static void simpleMessage(Context context, String message) {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
}
而且你必须调用它喜欢:
GlobalFunctions.simpleMessage(/*YourActivity.this*/ /*or*/ /*getActivity()*/, "toast");
答
一种解决方案是通过Context
作为Activity
或Fragment
的参数。
而不是实例化GlobalFunctions
,写入和使用静态方法可能是一个更好的方法。
答
创建一个Java类utils的:
public class Utils {
public static void showToast(Context context, String text) {
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
}
// for example on the Activity code
Utils.showToast(this, "This is the toast text");
答
尝试此创建班级像这样通过Context
和Toast
消息这样的参数
public class GlobalFunctions {
public static void simpleMessage(Context context,String message) {
Toast.makeText(Context, message, Toast.LENGTH_LONG).show();
}
}
调用这个函数就像在现场活动之外这
GlobalFunctions.simpleMessage(YourActivity.this,"your Mesaage");
答
饲养环境可以是内存泄漏的原因,但有一些解决方法。
您可以使用应用程序或应用程序上下文创建Singleton,并在您的自定义应用程序类的onCreate
中初始化它。但是你必须记住,你不能使用这个上下文来构建视图 - 它不是风格化的。
其他方式只是传递上下文作为参数。
对不起,缺码,从手机:)
'GlobalFunctions.simpleMessage(YourActivity.this,“你Mesaage”)响应;'不会工作,因为这不是静态类也方法,你必须从变量中提取它。 – Ibrahim
@Ibrahim我只是更新我的答案 –
我宁愿保留你原来的答案,因为它提出了不同的概念,对整个问题更有用,现在你编辑它,就像在问题中的所有答案一样,使用相同的概念和方式,所以它是之前变得毫无用处。 – Ibrahim