0

我有一个严重的问题导致我的应用程序崩溃。

我正在将应用程序中的一些文本加载到 TextView 中。此文本的某些部分是可点击的,应该调用另一个活动 - 这适用于大多数设备。不幸的是,它不适用于 Nexus 7 设备,我真的不知道为什么。

这是我从 Google 获得的堆栈跟踪:

java.lang.RuntimeException:无法在 android.os.Handler.(Handler.java:197) 的 android.os.Handler.(Handler.java:111) 调用 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);

stacktrace 告诉我调用 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 回答