2017-10-14 87 views
-1

我正在关注如何将活动中经常使用的函数放在一个地方的教程。如何成功地在全局声明变量,问题与上下文

例如,在我的项目中出现的一条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并不管我摆在ToastContext部分,我得到了Cannot resolve method消息。如果在这个问题上有任何有关傻瓜的好教程,我会很感激。

回答

1

的关键是static

静态值允许您在整个项目中使用静态methodsvariables ..等等。

您可以使用下面的概念:

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"); 
1

一种解决方案是通过Context作为ActivityFragment的参数。

而不是实例化GlobalFunctions,写入和使用静态方法可能是一个更好的方法。

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"); 
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"); 
+0

'GlobalFunctions.simpleMessage(YourActivity.this,“你Mesaage”)响应;'不会工作,因为这不是静态类也方法,你必须从变量中提取它。 – Ibrahim

+0

@Ibrahim我只是更新我的答案 –

+0

我宁愿保留你原来的答案,因为它提出了不同的概念,对整个问题更有用,现在你编辑它,就像在问题中的所有答案一样,使用相同的概念和方式,所以它是之前变得毫无用处。 – Ibrahim

1

饲养环境可以是内存泄漏的原因,但有一些解决方法。

您可以使用应用程序或应用程序上下文创建Singleton,并在您的自定义应用程序类的onCreate中初始化它。但是你必须记住,你不能使用这个上下文来构建视图 - 它不是风格化的。

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

对不起,缺码,从手机:)