1
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String test =  Util.imei();
}


import android.content.Context;
import android.telephony.TelephonyManager;

public class Util{
    Context context;

    public Util(Context context) {
        this.context = context;
    }

    public String imei() {
        TelephonyManager telephonyManager = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        return telephonyManager.getDeviceId();
    }
}

出现错误“无法从 Util 类型对非静态方法 imei() 进行静态引用”。如果我将行更改为:

public static String imei() {
    ...
    static Context context;

我收到错误并崩溃应用程序。(“E/AndroidRuntime(629): Caused by:java.lang.NullPointerException”)

4

3 回答 3

4

两种写法:

第一个 非静态

public class Util {
    Context context;

    public Util(Context context) {
        this.context = context;
    }

    public String imei() {
        TelephonyManager telephonyManager = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        return telephonyManager.getDeviceId();
    }
}

然后在onCreate方法中

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Util u = new Util(this);
    String test =  u.imei();
}

第二个 静态

public class Util {
    public static String imei(Context context) {
        TelephonyManager telephonyManager = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        return telephonyManager.getDeviceId();
    }
}

然后在onCreate方法中

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String test =  Util.imei(this);
}
于 2013-01-31T12:58:14.597 回答
0

在访问其方法之前,首先创建 Util 类的引用。

Util util = new Util();
String _imei = util.imei();
于 2013-01-31T12:53:09.677 回答
0

您正在尝试访问类中的方法而不为它创建对象。只有静态方法我们可以这样调用。在您的情况下,为该对象创建一个对象Util并调用imei()该对象。

像,

Util utilObj = new Util();
String imei = utilObj.imei();

希望这可以帮助。

于 2013-01-31T13:02:28.027 回答