我已經爲這個問題困惑了兩天了。我已經檢查過這個論壇和其他論壇,但不能得到足夠接近我的問題的問題或答案。onpostexecute中的意圖上下文不爲null,但爲空例外
基本上我試圖從非活動onpostexecute
執行的意圖open an activity
,我送從onMarkerClick
函數是在在MainActivity一個方法的上下文(MainActivty.this)和字符串。這是一個非活動構造函數,它具有上下文和字符串的參數。
問題是我得到一個null異常,但調試後,上下文不爲null,它具有MainActivity的值,但是當意圖被執行時它會返回一個空異常。我也嘗試了很多變體,例如。 Activity,getApplicationContext,this.context,(classname).context,(classname).this並嘗試全局上下文無濟於事。奇怪的是我把意圖放入if語句if(context!= null),並且它通過並執行意圖,這反過來又給了我空例外,這是沒有意義的。我知道我是新來的機器人,如果任何人有任何其他建議,打開活動,這將非常感謝。
E/AndroidRuntime:致命異常:主 工藝:com.example.quantusapps.joggertest,PID:12253 顯示java.lang.NullPointerException:嘗試調用虛擬方法「java.lang.String中android.content。在android.content.ComponentName(ComponentName.java:77) 處的android.content.Intent上的android.content.ContextWrapper.getPackageName(ContextWrapper.java:131) 上的null對象引用 上的Context.getPackageName() (Intent.java:4029) at com.example.quantusapps.joggertest.BusCoachTramInfo.onPostExecute(BusCoa chTramInfo.java:131) 在com.example.quantusapps.joggertest.BusCoachTramInfo.onPostExecute(BusCoachTramInfo.java:25) 在android.os.AsyncTask.finish(AsyncTask.java:632) 在android.os.AsyncTask。訪問$ android.os.AsyncTask $(AsyncTask.java:177) $ InternalHandler.handleMessage(AsyncTask.java:645) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper .loop(Looper.java:155) at android.app.ActivityThread.main(ActivityThread.java:5696) at java.lang.reflect.Method.invoke(Native Method) at java。 lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1028) at com.android.internal.os.ZygoteInit.main( ZygoteInit.java:823)<
這是在MainActivity法onMarkerClick
mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
String bctID = bctExtraMarkerInfo.get(marker.getId());
BusCoachTramInfo busCoachTramInfo = new BusCoachTramInfo(bctID, MainActivity.this);
busCoachTramInfo.execute(bctID);
return false;
}
});
這是不活動的構造。
Context context;
BusCoachTramInfo(String busstopID, Context context) {
this.context = context;
naptanIdUrl = "https://api.tfl.gov.uk/StopPoint/" + busstopID + "/Arrivals?app_key=" + tfl_API_KEY + "&app_id=9c0b3009";
}
這是空異常發生。得到完成
@Override
protected void onPostExecute(TreeMap<Integer, String[]> Map) {
super.onPostExecute(Map);
Intent i = new Intent(context, BusArrivalTime.class);
context.startActivity(i);
「非活動」似乎在擴展AsyncTask,這是正確的嗎? – 0X0nosugar
你好,是的,我也嘗試把擴展的asynctask放在一個內部類,但我不知道我是否做得很好。謝謝 – kash
我認爲它不一定是MainActivity的內部類,但IMO是最簡單的方法。因此,如果它是一個內部類,則不需要Context變量,只需編寫「Mainactivity.this」並讓我們看看會發生什麼。(順便說一句,沒有辦法告訴你是否在沒有看到代碼的情況下100%地完成了。 ) – 0X0nosugar