[解決済み] Looper.prepare()が呼び出されていないスレッドでハンドラを作成することができない
2023-08-09 01:58:24
質問
アクティビティがあり、その中にクラスがあります。
text=new Dynamictext(...);
text.setText("txt");
をDynamicText javaの中に入れています。
public void setText(String text) {
this.text=text;
new asyncCreateText().execute();
//this.createText(text);
}
//private Handler handler = new Handler();
private class asyncCreateText extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... unused) {
return null;
}
@Override
protected void onPostExecute(Void unused) {
}
}
得ることができる。
ERROR/AndroidRuntime(5176): 原因:java.lang.RuntimeException: Looper.prepare()を呼び出していないスレッド内ではハンドラを作成できません。
このエラーはどのように処理すればよいのでしょうか。
ERROR/AndroidRuntime(5370): java.lang.ExceptionInInitializerError
ERROR/AndroidRuntime(5370): at com.l.start.DynamicText.setText(DynamicText.java:125)
ERROR/AndroidRuntime(5370): at com.l.start.OpenGLRenderer.initfonts(OpenGLRenderer.java:168)
ERROR/AndroidRuntime(5370): at com.l.start.OpenGLRenderer.init(OpenGLRenderer.java:119)
ERROR/AndroidRuntime(5370): at com.l.start.OpenGLRenderer.onSurfaceChanged(OpenGLRenderer.java:90)
ERROR/AndroidRuntime(5370): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1120)
ERROR/AndroidRuntime(5370): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:975)
ERROR/AndroidRuntime(5370): Caused by: java.lang.RuntimeException:
Can't create handler inside thread that has not called Looper.prepare()
ERROR/AndroidRuntime(5370): at android.os.Handler.<init>(Handler.java:121)
ERROR/AndroidRuntime(5370): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
ERROR/AndroidRuntime(5370): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
ERROR/AndroidRuntime(5370): at android.os.AsyncTask.<clinit>(AsyncTask.java:152)
ERROR/AndroidRuntime(5370): ... 6 more
どのように解決するのですか?
エラーは自明です...
doInBackground()
はバックグラウンドのスレッドで実行され、ループすることを意図していないので
Looper
.
ハンドラを直接インスタンス化する必要はないでしょう。
doInBackground()
実装が返すどのようなデータも
onPostExecute()
に渡され、UIスレッドで実行されます。
mActivity = ThisActivity.this;
mActivity.runOnUiThread(new Runnable() {
public void run() {
new asyncCreateText().execute();
}
});
の後に、問題のスタックトレースが表示されるようにしました。
を開始しようとしているように見えます。
AsyncTask
を始めようとしているようです。
Looper.loop()
にもならないからです。AsyncTasks は本当に UI スレッドからのみ実行されるように設計されています。
最も破壊的でない修正方法は、おそらく
Activity.runOnUiThread()
を
Runnable
をキックオフし
AsyncTask
.
関連
-
[解決済み】Looper.prepare()を呼び出していないスレッド内でハンドラを作成できない。)
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] 文字サイズとアンドロイドの画面サイズの違い
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Looper.prepare()を呼び出していないスレッド内でハンドラを作成できない。)
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] handler.postDelayed()を停止する。
-
[解決済み] Android Navigation Architecture Component - 現在表示されているフラグメントを取得する
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] フラグメント間の値の受け渡し方法
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
-
[解決済み] WhatsAppでメッセージを送信する