조각이 있습니다. 이 조각에서는 json-rpc에서 http 요청을 실행합니다. 결과를 처리하기 위해 콜백에 이와 같은 것이 있습니다.
FragmentClass.this.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// Do something
}
});
문제는 때로는 첫 번째 줄에서 NullPointerException이 발생한다는 것입니다 ... 내 첫 번째 의도는 요청이 실행되는 동안 사용자가 다른 조각을 선택하기 때문에 조각이 빠르게 분리되어
FragmentClass.this.getActivity();
활동이 없으며 null을 반환합니다. 나는 다음과 같은 if로 모든 것을 동봉합니다.
// New if:
if (FragmentClass.this.getActivity() != null) {
FragmentClass.this.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// Do something
}
});
}
하지만 ... 아무것도 ... 이제 if 문에서 NullPointerException이 발생합니다. 그것은 보인다
FragmentClass.this
null입니다.
어떻게 가능합니다. 코드 부분이 필요하지 않고 gc가 수집 할 때까지 인스턴스가 유지 될 것이라고 생각했습니다.
다음은 logcat이 제공하는 스택 추적입니다. 패키지 이름과 클래스 이름을 변경했습니다. 라인 192는 if 문의 라인입니다.
09-18 10:49:36.915 3860-3860/de.unkown.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at de.unkown.app.camera.#FragmentClass$6.onError(FragmentClass.java:192)
at de.unkown.app.webservice.JsonRpcService$10.onError(JsonRpcService.java:497)
at de.unkown.app.webservice.JsonRpcService$DefaultErrorListener.onErrorResponse(JsonRpcService.java:107)
at com.android.volley.Request.deliverError(Request.java:577)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:101)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
도와 주셔서 감사합니다!
아르투르
확인,
모든 비동기 블록에서 변경
FragmentClass.this.getActivity()
...에
getActivity()
이 솔기가 도움이됩니다. 왜 그런지 묻지 마세요 ...이게 똑같을 줄 알았는데 ...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다