Android получить вспомогательные методы класса проблема - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть небольшая проблема с получением моего вспомогательного класса в Android. У меня есть 3 класса A, B, C. B расширяет A и C. Я пытаюсь использовать методы в C из B, но каждый раз, когда я пытаюсь использовать ихэто бросает мне NullPointerException.

Вот код, который я использую:

В классе AI есть это:

public class A {

//declaration from class C
C newC;

}

В классе CI есть:

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

В классе BI есть:

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



}

и эта строка: 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

Есть предложения?

1 Ответ

0 голосов
/ 15 сентября 2011

Ваш контекст нулевой.

, который бы вы знали, вы бы посмотрели на трассировку стека.

Кроме того, версия не объявлена. он даже не должен компилироваться.

редактировать

в методе, который выбрасывает NPE, примерно 3 переменные. Это должен быть один из них. Так. Либо ваш контекст равен нулю (нигде не инициализирован), либо ваш менеджер пакетов равен нулю (весьма маловероятно), либо ваша информация о пакете равна нулю (также маловероятно, так как он должен вызвать исключение).

Я предлагаю вам проверить все три, но особенно контекст.

(также, ваше поле версии не является статическим и не может быть доступно из getPackageVersion, который является статическим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...