私はhelperクラスをAndroidで取得することに少し問題があります。私は3つのクラスA、B、Cを持っています。 BはAとCを拡張しています。しかし、それらを使用しようとするたびに、私はNullPointerExceptionをスローします。ここでAndroid get helperクラスメソッドの問題
は、私が使用しているコードです:
をクラスAIでは、この持っている:クラスのCIで
public class A {
//declaration from class C
C newC;
}
は持っている:クラスBIで
public class C {
static Context context;
String version = "";
public static int strVerToIntVer(String strLen){
String newStr = strLen.replace(".", "");
int i=Integer.parseInt(newStr);
return i;
}
public static String getPackageVersion(){
try {
PackageManager pm = context.getPackageManager();
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), 0);
version = packageInfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return version;
}
public static boolean checkClientApiVer(String clientApiVer){
int s = C.strVerToIntVer(clientApiVer);
int c = C.strVerToIntVer(getPackageVersion());
return (c>=s);
}
}
があります
public class B extends A {
C newC;
serverApiVer = jsonObj.getString("server_api_ver");
Log.w("SERVER API VER","SHOW SERVER API VERSION : "+serverApiVer);
C.checkClientApiVer(serverApiVer);
}
とこのlin e:C.checkClientApiVer(serverApiVer);
は私にNullPointerExceptionをスローしていますが、それを修正する方法はまだ分かりません。
LogCat:
09-
15 15:47:37.752: WARN/System.err(8150): java.lang.NullPointerException
09-15 15:47:37.752: WARN/System.err(8150): at com.stampii.stampii.comm.rpc.C.getPackageVersion(RPCCommunicator.java:1035)
09-15 15:47:37.752: WARN/System.err(8150): at com.stampii.stampii.comm.rpc.C.checkClientApiVer(RPCCommunicator.java:1048)
09-15 15:47:37.752: WARN/System.err(8150): at com.stampii.stampii.comm.rpc.B.executeBefore(InfoStartRPCPacket.java:103)
09-15 15:47:37.752: WARN/System.err(8150): at com.stampii.stampii.user.UserLogin$2.onClick(UserLogin.java:215)
09-15 15:47:37.752: WARN/System.err(8150): at android.view.View.performClick(View.java:2408)
09-15 15:47:37.752: WARN/System.err(8150): at android.view.View$PerformClick.run(View.java:8817)
09-15 15:47:37.752: WARN/System.err(8150): at android.os.Handler.handleCallback(Handler.java:587)
09-15 15:47:37.752: WARN/System.err(8150): at android.os.Handler.dispatchMessage(Handler.java:92)
09-15 15:47:37.762: WARN/System.err(8150): at android.os.Looper.loop(Looper.java:144)
09-15 15:47:37.762: WARN/System.err(8150): at android.app.ActivityThread.main(ActivityThread.java:4937)
09-15 15:47:37.762: WARN/System.err(8150): at java.lang.reflect.Method.invokeNative(Native Method)
09-15 15:47:37.762: WARN/System.err(8150): at java.lang.reflect.Method.invoke(Method.java:521)
09-15 15:47:37.762: WARN/System.err(8150): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-15 15:47:37.762: WARN/System.err(8150): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-15 15:47:37.762: WARN/System.err(8150): at dalvik.system.NativeStart.main(Native Method)
09-15 15:47:37.762: WARN/ERROR(8150): Error - java.lang.NullPointerException
任意の提案ですか?
多分getPackageVersion()がnullを返します? – MByD
実際に私は、私はそれがnullを返している理由を知っていると思うが、私はそれをどのように修正することができます。** return version; ** try-catchブロック内にあるはずですが、これを行うとエラーの戻り値の型が無効になります –
いいえ、これは原因ではありません。 –