지금 이틀 동안이 문제로 어려움을 겪었습니다. 이 포럼 및 다른 포럼을 확인했지만 내 문제에 충분히 근접한 질문이나 대답을 얻을 수 없습니다. onpostexecute의 의도 컨텍스트가 null이 아니지만 null 예외가 발생했습니다.
는 기본적으로 나는 내가 MainActivity의 방법에있는onMarkerClick
함수의 컨텍스트 (MainActivty.this) 및 문자열을 보내고있다, 비 활동
onpostexecute
에서
open an activity
에 목적을 실행하기 위해 노력하고있어. 이것은 컨텍스트와 문자열에 대한 매개 변수가있는 비 활동의 생성자로 이동합니다.
문제는 null 예외가 발생하지만 디버깅 후 컨텍스트가 MainActivity 값을 가지지 만 인 텐트가 실행될 때 null 예외가 반환됩니다. 나는 또한 많은 변형을 시도했다. Activity, getApplicationContext, this.context, (classname) .context, (classname).이 전역 컨텍스트를 사용하지 않으려 고 시도했습니다. 이상한 점은 (context! = null) if 문에 if 문을 넣는 것입니다. 그리고 문법을 통과하고 intent를 실행합니다.이 문법은 나에게 null 예외를줍니다. 나는 누군가에게 큰 감사의 말을 전할 수있는 다른 제안이 있다면 안드로이드에 익숙하다는 것을 안다.
E/AndroidRuntime : 치명적인 예외 : 주요 프로세스 : com.example.quantusapps.joggertest, PID : 12253 java.lang.NullPointerException이 : java.lang.String의 android.content '가상 메서드 호출을 시도합니다. (ContextWrapper.java:131) android.content.Intent의 (ContextWrapper.java:131) android.content.ComponentName. (ComponentName.java:77) 의 null 객체 참조에서 Context.getPackageName() (Intent.java:4029) at com.example.quantusapps.joggertest.BusCoachTramInfo.onPostExecute (BusCoa android.os.AsyncTask에서 android.os.AsyncTask.finish (AsyncTask.java:632) 에서 com.example.quantusapps.joggertest.BusCoachTramInfo.onPostExecute (BusCoachTramInfo.java:25) 에서 chTramInfo.java:131) . $ 600 (AsyncTask.java:177)에 android.os.AsyncTask $ InternalHandler.handleMessage (AsyncTask.java:645) at android.os.Handler.dispatchMessage (Handler.java:102) android.os.Looper .loop (Looper.java:155) android.app.ActivityThread.main (ActivityThread.java:5696)에서 java.lang.reflect.Method.invoke (기본 방법)에서 자바에서 . 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) <
이이 비 활동 생성자 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;
}
});
와 Mainactivity 방법이다. 널 예외가 발생된다
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를 넣으려고했으나 잘했는지 확신 할 수 없습니다. thanks – kash
MainActivity의 내부 클래스 일 필요는 없지만 IMO가 가장 쉬운 방법이라고 생각합니다. 따라서 내부 클래스 인 경우 Context 변수가 필요 없으며 "Mainactivity.this"를 작성하고 어떤 일이 발생하는지 봅시다. (한 번에 코드를 보지 않고도 100 % 제대로했는지 여부를 알 수 없습니다.) – 0X0nosugar