나는 JNI를 통해 C 함수를 호출합니다. 이 함수는 pthread
을 생성하고이를 JVM에 연결합니다. 이 pthread
에서 Java 메소드를 호출하여 Toast
알림을 게시해야합니다. 불행히도 Toast
알림이 호출되자 마자 null 포인터 예외이 발생합니다.Android - 토스트 호출의 Null 포인터
public void showToast(final String msg) {
final Context MyContext = this;
Handler h = new Handler(MyContext.getMainLooper());
h.post(new Runnable() {
@Override
public void run() {
Toast myToast = Toast.makeText(MyContext, msg, Toast.LENGTH_SHORT);
myToast.show();
}
});
}
는 널 포인터 예외의 원인이 무엇을 할 수 있고, 는 어떻게 그것을를 해결할 수 있습니다 : 여기
내 서비스 클래스에Toast
전화를 처리하는 방법?
C 함수에서 컨텍스트를 가져 오는 데 실패합니까? 여기
는getApplicationContext
를 사용하여 오류 메시지
W/dalvikvm(4010): JNI WARNING: JNI method called with exception pending
W/dalvikvm(4010): in Ldalvik/system/NativeStart;.run:()V (CallVoidMethod)
W/dalvikvm(4010): Pending exception is:
I/dalvikvm(4010): java.lang.NullPointerException:
I/dalvikvm(4010): at android.content.ContextWrapper.getMainLooper(ContextWrapper.java:104)
입니다 :
I/dalvikvm(6242): java.lang.NullPointerException:
I/dalvikvm(6242): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
당신이 정확한 오류 메시지를 게시 할 수에 액세스 할 수있는 적절한 컨텍스트에 정적 참조가? –
'this' 대신 getApplicationContext()를 사용해 보셨습니까? –
예[email protected] ρяσѕρєяK 언급 된대로 getApplicationContext() 사용해야합니다. –