11

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

4

6 回答 6

22

像这样创建类并在此处添加您的功能:

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" />

谢谢。

于 2013-01-23T17:04:12.663 回答
3

像这样创建实用程序类:

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);
于 2013-01-23T17:08:32.343 回答
1

这可能不是最好的方法,并且会有其他人可能会提出一些更好的选择,但这就是会做的。

创建一个包含所有功能的类并将其保存为可能Utility.java.

在需要调用任何函数的代码中使用 Utility 类的对象。

Utility myUtilObj = new Utility();
myUtilObj.checkInternet();

或者也许使函数静态,你可以简单地使用Utility.checkInternet()你需要调用它的地方。

于 2013-01-23T16:58:38.790 回答
1

只需使用方法创建publicstatic,就像这样......

package com.example.test1;

public class GlobalMethod {

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

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

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

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

有很多方法可以做,请查看其他答案。希望这会有所帮助。

于 2015-06-11T03:38:27.240 回答
0

您可以创建一个实用程序类,它具有一组静态方法(假设这样的类不拥有任何自己的真实状态)。现在可以从应用程序的不同部分调用这些静态方法。

于 2013-01-23T16:59:03.507 回答
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;

在我需要测试互联网连接的代码部分中,我使用了这个:

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;
}
于 2019-07-30T23:31:53.710 回答