使用したいrunOnUiThread
UIグループ内でスレッドを使用するかどうかは、アンドロイドUIがシングルスレッドモデルであるため、ハンドラを使用する必要があります。runOnUiThreadを使用する必要がありますが、利用時にnullpointerExceptionが発生します
だから私はrunOnUiThread
public class VideoCap implements GLSurfaceView.Renderer {
private static TextView sTextView; //global variable
private Context context;
private VideoCap(GLSurfaceView surface, TextView textView) {
this.context = context;
sTextView = textView;
}
public void showText(final TextView textView) {
sTextView = textView;
sTextView.findViewById(R.id.text);
((Activity)context).runOnUiThread(new Runnable() { //NPE
@Override
public void run() {
sTextView.setText("MyVideoRendererGui~~");
sTextView.setTextColor(Color.RED);
}
});
}
}
を使用logcat
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Activity.runOnUiThread(java.lang.Runnable)' on a null object reference
at com.example.unno.mywebrtc.MyVideoRendererGui.showText(MyVideoRendererGui.java:90)
at com.example.unno.mywebrtc.MyVideoRendererGui.onDrawFrame(MyVideoRendererGui.java:449)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1535)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
は、文脈上の問題により、おそらく引き起こされますか? nullpointerExceptionを発生させずに、どのようにrunOnUiThreadを使用しますか?
ありがとうございました。あなたのコンストラクタは、あなたが期待してcontext
がそこに設定されていないとして、それが呼び出されていないprivate
であるだけでなく、
私のクラスはアクティビティではありません。したがって、getApplicationContext()を使用しないでください。runOnUiThread(new Runnable(){' – chohyunwook
)' getActivity() 'を使用してください。 – BlackHatSamurai
同様に、getActivity()を使用しないでください。 – chohyunwook