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):引起:java.lang.NullPointerException”)
答案 0 :(得分:3)
写两种方式:
第一次 非静态
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);
}
答案 1 :(得分:0)
在访问其方法之前首先创建Util类的引用。
Util util = new Util();
String _imei = util.imei();
答案 2 :(得分:0)
您正在尝试访问类中的方法而不为其创建对象。只有静态方法,我们可以这样调用。在您的情况下,为Util
创建一个对象,并使用该对象调用imei()
。
像,
Util utilObj = new Util();
String imei = utilObj.imei();
希望这有帮助。