我如何成功地在全局声明变量,与上下文一起发布

时间:2017-10-14 13:40:57

标签: android android-context

我正在学习如何将活动中经常使用的功能放在一个地方的教程。

例如,在我的整个项目中出现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); } 消息。另外,如果有关于这个主题的傻瓜的任何好的教程,我将不胜感激。

5 个答案:

答案 0 :(得分:1)

一种解决方案是将Context作为ActivityFragment中的参数传递。

而不是实例化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)

尝试这样创建这样的类,将ContextToast消息作为参数传递给

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中对其进行初始化。但是你必须记住,你不能使用这个上下文来构建视图 - 它没有风格化。

其他方式只是将上下文作为参数传递。

很抱歉找不到代码,电话回复:)