在android中创建全局函数

时间:2013-01-23 16:55:57

标签: java android

我想要做的是创建一个具有各种功能的java文件,我希望在整个项目中使用它。例如,检查Internet连接。然后我想在每个活动上调用该函数。有谁知道怎么做?

4 个答案:

答案 0 :(得分:17)

像这样创建类并在此处添加您的函数:

package com.mytest;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class MyGlobals{
    Context mContext;

    // constructor
    public MyGlobals(Context context){
        this.mContext = context;
    }

    public String getUserName(){
        return "test";
    }

    public boolean isNetworkConnected() {
          ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo ni = cm.getActiveNetworkInfo();
          if (ni == null) {
           // There are no active networks.
           return false;
          } else
           return true;
    }
}

然后在您的活动中声明实例:

MyGlobals myGlog;

然后初始化并使用该全局类中的方法:

myGlog = new MyGlobals(getApplicationContext());
String username = myGlog.getUserName();

boolean inConnected = myGlog.isNetworkConnected();

您的清单文件中所需的权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

感谢。

答案 1 :(得分:3)

像这样创建Utility类:

public final class AppUtils {

    private AppUtils() {
    }

@SuppressLint("NewApi")
    public static void setTabColor(TabHost tabHost) {
        int max = tabHost.getTabWidget().getChildCount();
        for (int i = 0; i < max; i++) {
            View view = tabHost.getTabWidget().getChildAt(i);
                    TextView tv = (TextView) view.findViewById(android.R.id.title);
                    tv.setTextColor(view.isSelected() ? Color.parseColor("#ED8800") : Color.GRAY);
                    view.setBackgroundResource(R.color.black);
            }
        }

}

现在,从任何类的Android应用程序,您都可以像这样运行Apputils:

AppUtils.setTabColor(tabHost);

答案 2 :(得分:0)

只需使用public方法创建static类,就像这样......

package com.example.test1;

public class GlobalMethod {

    public static String getHelloWorld() {
        return "Hello, World!";
    }

    public static int getAppleCount() {
        return 45;
    }
}

现在,您可以从任何地方调用方法......

GlobalMethod.getHelloWorld();
GlobalMethod.getAppleCount();

虽然有很多方法可以做,但请查看其他答案。希望这有用。

答案 3 :(得分:0)

我在下面描述了我是如何实现的。首先,我在app/src/main/java/com/[my folder]/MyGlobals.java中创建了以下类:

package [My package];

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class MyGlobals {
    Context mContext;
    // Constructor
    public MyGlobals(Context context){
        this.mContext = context;
    }
    public boolean checkInternetConnection() {
        ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if ((cm != null) && (netInfo != null)) {
            if (netInfo.isConnected()) {
                return true;
            }
        }
        return false;
    }
}

然后在需要使用全局函数的类中,声明了以下成员变量:

MyGlobals myGlobals;
boolean checkInternetConnection;

在我需要测试Internet连接的代码部分中,我使用了以下代码:

myGlobals = new MyGlobals(getApplicationContext());
checkInternetConnection = myGlobals.checkInternetConnection();
if(checkInternetConnection == false){
    Util.showToast([Name of my activity].this, getString(R.string.nointernet), getString(R.string.error), true, false);
    return;
}