Попытка получить имя класса на Android с помощью getClassContext () [1] .getName () - PullRequest
1 голос
/ 23 февраля 2012

У меня есть следующий фрагмент кода, который используется на Android и тестировался около 6 месяцев назад.Он работал нормально и никогда не был причиной каких-либо проблем.

private static class CurrentClassGetter extends SecurityManager {
    public String getClassName() {
      return getClassContext()[1].getName();
    }
}

Код вызова:

    //---Get my name (last part of class name)
    System.out.println("Attempting to get class name");
    msSimpleName = new CurrentClassGetter().getClassName();

Что, как я заметил, является точно таким же битом кода, который рекомендуетсякто-то в этом SO ответит здесь:

Получение имени класса из статического метода в Java

Поскольку этот код был написан, я обновил свой Android SDK изс r14 по r16.Я также скачал все новые пакеты SDK, от API10 (Android 2.3.3) до API15 (Android 4.0.3).Однако вышеприведенный код, который работал нормально, теперь выдает эту ошибку:

02-22 16:18:26.779: W/System.err(2593): java.lang.NullPointerException
02-22 16:18:26.786: W/System.err(2593):     at com.company.myCompany.mobile.android.myCompanyApp$CurrentClassGetter.getClassName(myCompanyApp.java:413)
02-22 16:18:26.806: W/System.err(2593):     at com.company.myCompany.mobile.android.myCompanyApp.monitor(myCompanyApp.java:289)
02-22 16:18:26.806: W/System.err(2593):     at com.company.myCompany.mobile.android.myCompanyApp.monitor(myCompanyApp.java:257)
02-22 16:18:26.826: W/System.err(2593):     at com.gomez.appname.appnameActivity.onCreate(appnameActivity.java:22)
02-22 16:18:26.836: W/System.err(2593):     at android.app.Activity.performCreate(Activity.java:4465)
02-22 16:18:26.846: W/System.err(2593):     at android.app.InstAppentation.callActivityOnCreate(InstAppentation.java:1049)
02-22 16:18:26.856: W/System.err(2593):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
02-22 16:18:26.866: W/System.err(2593):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
02-22 16:18:26.876: W/System.err(2593):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-22 16:18:26.876: W/System.err(2593):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-22 16:18:26.896: W/System.err(2593):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-22 16:18:26.896: W/System.err(2593):     at android.os.Looper.loop(Looper.java:137)
02-22 16:18:26.906: W/System.err(2593):     at android.app.ActivityThread.main(ActivityThread.java:4424)
02-22 16:18:26.926: W/System.err(2593):     at java.lang.reflect.Method.invokeNative(Native Method)
02-22 16:18:26.926: W/System.err(2593):     at java.lang.reflect.Method.invoke(Method.java:511)
02-22 16:18:26.946: W/System.err(2593):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-22 16:18:26.946: W/System.err(2593):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-22 16:18:26.956: W/System.err(2593):     at dalvik.system.NativeStart.main(Native Method)

По сути, вы смотрите на вызов onCreate в Android и мой частный API.Внутри API он пытается получить текущее имя класса, используя приведенный выше код.

Тогда версия Target API была 8, а сейчас 8 (Android v2.2), так что она не изменилась вообще.Уровень соответствия Java 1.6, 64-разрядная версия Java 1.6.0_24.

Кто-нибудь знает, почему getClassContext () [1] .getName () внезапно выдает исключение NullPointerException, когда оно работало раньше?

1 Ответ

0 голосов
/ 14 сентября 2012

Никакого исправления не видно, я полностью удалил этот блок кода. В любом случае, он использовался только для вывода отладки, и не стоило того, чтобы выяснить, почему это не сработало.

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