我正在学习如何将活动中经常使用的功能放在一个地方的教程。
例如,在我的整个项目中出现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,无论我在Context
Toast
部分添加Cannot resolve method
消息,我都会收到getCheapestProduct(id:number): Product[] {
return this.Products.sort(function (a, b) {
return Number(a.price) - Number(b.price);
}).slice(1,id);
}
消息。另外,如果有关于这个主题的傻瓜的任何好的教程,我将不胜感激。
答案 0 :(得分:1)
一种解决方案是将Context
作为Activity
或Fragment
中的参数传递。
而不是实例化GlobalFunctions
,编写和使用静态方法可能是更好的方法。
答案 1 :(得分:1)
创建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");
答案 2 :(得分:1)
关键是static
。
静态值允许您在整个项目中使用静态methods
variables
.. iec。
您可以使用以下概念:
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");
答案 3 :(得分:1)
尝试这样创建这样的类,将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");
答案 4 :(得分:1)
将事件中的上下文保持在活动之外可能是内存泄漏的原因,但有一些解决方法。
您可以使用应用程序或应用程序上下文创建Singleton,并在自定义应用程序类中的onCreate
中对其进行初始化。但是你必须记住,你不能使用这个上下文来构建视图 - 它没有风格化。
其他方式只是将上下文作为参数传递。
很抱歉找不到代码,电话回复:)