Я работал над приложением, которое внезапно перестало работать на моем тестовом устройстве droid x2, но отлично работает во всем остальном. Я попытался включить и выключить телефон, удалить существующую копию приложения и переустановить, и, наконец, я действительно пошел и сделал сброс настроек к заводским значениям, но по какой-либо причине, когда основное действие идет, чтобы создать экземпляр контекста, который я использую, приходит up null, однако, это происходит только на одном устройстве, а на других нет.
Я прошел и проверил свои флаги манифеста, и я почти уверен, что это не так.
Когда я отлаживал и проходил по приложению, я заметил, что с oncreate
оно идет прямо до onResume
, и где я использую контекст для метода, оно становится пустым, но только когда я запускаю его на droid x2. Это не будет делать это на любом другом устройстве.
Самое странное, что этого никогда не было до сегодняшнего дня, и я не вносил никаких изменений в код в течение 3 дней. Фактически, это было проблемой только в последние пару часов.
вот logcat, когда он терпит неудачу:
02-20 19:30:12.354: E/AndroidRuntime(21483): java.lang.RuntimeException: Unable to resume activity {graffit.main/graffit.main.MyView}: java.lang.NullPointerException
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2208)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2228)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.ActivityThread.access$1500(ActivityThread.java:124)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.os.Looper.loop(Looper.java:130)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.ActivityThread.main(ActivityThread.java:3806)
02-20 19:30:12.354: E/AndroidRuntime(21483): at java.lang.reflect.Method.invokeNative(Native Method)
02-20 19:30:12.354: E/AndroidRuntime(21483): at java.lang.reflect.Method.invoke(Method.java:507)
02-20 19:30:12.354: E/AndroidRuntime(21483): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-20 19:30:12.354: E/AndroidRuntime(21483): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-20 19:30:12.354: E/AndroidRuntime(21483): at dalvik.system.NativeStart.main(Native Method)
02-20 19:30:12.354: E/AndroidRuntime(21483): Caused by: java.lang.NullPointerException
02-20 19:30:12.354: E/AndroidRuntime(21483): at graffit.main.MyView.onResume(MyView.java:728)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.Activity.performResume(Activity.java:3912)
02-20 19:30:12.354: E/AndroidRuntime(21483): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2191)
02-20 19:30:12.354: E/AndroidRuntime(21483): ... 12 more
Сбой происходит, когда я вхожу в систему, и предполагается, что действие MyView открывается, но контекст имеет значение null. Я знаю это, потому что я отлаживал и в этом методе в моем коде, где я использую контекст, я вижу его нуль.
@Override
protected void onResume() {
super.onResume();
try{
System.gc();
myContext.startGpsListener();
//Log.w("curLoc is from"+myContext.curLoc.getProvider(),"thats it");
}catch(Exception e){
e.printStackTrace();
}
if(getIntent().hasExtra("UID")){
curr_uid = getIntent().getStringExtra("UID");
curr_rid = getIntent().getStringExtra("RID");
curr_profimg = getIntent().getStringExtra("imagepath");
curr_usrname = getIntent().getStringExtra("UsrName");
myContext.setUserInfo(curr_uid, curr_usrname);<-------------failure here
}