Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何成功地在全局声明变量,与上下文有关_Android_Android Context - Fatal编程技术网

Android 如何成功地在全局声明变量,与上下文有关

Android 如何成功地在全局声明变量,与上下文有关,android,android-context,Android,Android Context,下面是关于如何将活动中经常使用的函数放在一个位置的教程 例如,在整个项目中出现的toast消息,而不是在每个活动中都有函数,只是在一个地方调用它,GlobalFunctions.java 因此,我用简单的函数得到它,例如,在GlobalFunctions.java: public class GlobalFunctions { public void simpleMessage() { System.out.println("simpleMessage text goe

下面是关于如何将活动中经常使用的函数放在一个位置的教程

例如,在整个项目中出现的
toast
消息,而不是在每个活动中都有函数,只是在一个地方调用它,
GlobalFunctions.java

因此,我用简单的函数得到它,例如,在
GlobalFunctions.java

public class GlobalFunctions {

    public void simpleMessage() {
        System.out.println("simpleMessage text goes here");
    }

}
我从
活动1
中这样称呼它:

GlobalFunctions simplemessage = new GlobalFunctions();
simplemessage.simpleMessage();
那怎么办呢

public class GlobalFunctions {

    public void simpleMessage() {
        Toast.makeText(getApplicationContext(), "simpleMessage text goes here", Toast.LENGTH_LONG).show();
    }
}

我看了好几篇帖子,包括,无论我在
上下文中放置了什么
Toast
部分,我都会收到一条
无法解析方法的消息。此外,如果有任何关于这个主题的好的傻瓜教程,我将不胜感激

一种解决方案是将
上下文作为参数从
活动
片段
传递


与实例化
全局函数相比,编写和使用静态方法可能是更好的方法。

创建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");
关键是

静态值允许您在整个项目中使用静态
方法
变量

您可以使用以下概念:

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
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");
像这样调用这个函数

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,“your mesage”)不起作用,因为这不是静态类也是方法,您必须从变量中提取它。@Ibrahim我刚刚更新了我的ansI,希望保留您的旧答案,因为它承载了不同的概念,对整个问题更有用,现在你编辑了它,就像问题中的所有答案一样,它包含了相同的概念和方式,所以它以前变得毫无用处。@Ibrahim没有得到你,我的朋友