0

アプリがクラッシュする深刻な問題があります。

アプリのテキストを TextView に読み込んでいます。このテキストの一部はクリック可能で、別のアクティビティを呼び出す必要があります - これはほとんどのデバイスで正常に機能します。残念ながら、Nexus 7 デバイスでは機能しません。その理由はよくわかりません。

これは、Google から取得したスタック トレースです。

java.lang.RuntimeException: Android.os.Handler.(Handler.java:111) で Android.os.Handler.(Handler.java:197) で Looper.prepare() を呼び出していないスレッド内でハンドラを作成できませんandroid.widget.Editor$UserDictionaryListener.(Editor.java:3836) で android.widget.Editor.(Editor.java:192) で android.widget.TextView.createEditorIfNeeded(TextView.java:8475) で android.widget. TextView.setText(TextView.java:3611) で android.widget.TextView.setText(TextView.java:3554) で android.widget.TextView.append(TextView.java:3277) で android.widget.TextView.append(TextView .java:3267) [...一部のアプリ メソッドですが、この問題には関係ありません...]

Java コード:

final String text = displayedText;
SpannableString link = makeLinkSpan(displayedText, new View.OnClickListener() {          
    @Override
    public void onClick(View v) {
        //call the activiy
    }
});

textView.append(link);

スタックトレースは Looper.prepare() を呼び出すように指示していますが、どこにあるのかわかりません... AsyncTask にデータをロードしています。doInBackground メソッド内でレイアウトがインフレートされ、textView はその子にすぎません。この問題が Nexus 7 ユーザーにのみ影響し、デバイスには影響しない理由がわかりません。Nexus 7 プリセットのエミュレーターでも問題なく動作しています

これを解決する方法はありますか?:D

4

1 に答える 1

2

メインスレッドでレイアウトを膨らませる必要があります。あなたはこれを行うことができます->

runOnUiThread(new Runnable() {

        @Override
        public void run() {
            // TODO Inflate layout & set textview's text here

        }
    });
于 2013-05-13T17:58:55.790 に答える