2013-01-31 5 views
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()에 정적 참조를 만들 수 없습니다. 난에 라인 변경하는 경우 :. 나는 오류 및 충돌 응용 프로그램을 얻을비 정적 메서드 getIMEI()에 대한 정적 참조를 유 형에서 만들 수 없습니다.

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

를 ("E/AndroidRuntime는 (629)에 의해 발생 : java.lang.NullPointerException이")

답변

3

를 작성하는 두 가지 방법 : onCreate 방법

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

2에게의 다음

1비 정적

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(); 
    } 
} 

정적

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

'Activity'에서'AsyncTask'를 생성했다고 가정합니다. 그런 다음'String test = Util.imei (TheActivity.this);라고 쓰거나 그렇지 않으면'AsyncTask'를 생성하여'context'를 전달해야합니다. – pbaris

0

이의 참조를 만듭니다 Util 클래스는 먼저 메서드에 액세스합니다.

Util util = new Util(); 
String _imei = util.imei(); 
0

. 정적 메서드에 대해서만 우리는 그렇게 호출 할 수 있습니다. 귀하의 경우 Util에 대한 개체를 만들고 해당 개체를 사용하여 imei()으로 전화하십시오.

처럼,이 도움이

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

희망.