18

我知道有很多类似的线程,但我已经通过它们仍然无法找出问题所在。我的程序到达处理程序,但它总是返回捕获异常“消息未处理”。

我声明了 TextViewprivate TextView chatbox;

在 onCreate 我有:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setUpViews();
        setUpListener();
    }

其中 setUpViews() 片段如下所示:

 private void setUpViews() {
    chatbox = (TextView) findViewById(R.id.chatbox);
    }

处理程序:

public Handler mHandler = new Handler(Looper.getMainLooper()){
        @Override
        public void handleMessage(Message msg){
            try{
                chatbox.setText("Got it!");
            }catch(Exception e){
                Log.i("MYLOG", "Message was not handled.");
            }

        }
    };

main.xml 文件中的片段:

<TextView
        android:id="@+id/chatbox"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:textAppearance="?android:attr/textAppearanceLarge" />
4

7 回答 7

53

为了将来参考,我有多个片段,一个用于 ViewPager 中的每个选项卡。一个 TextViewid在两个片段中具有相同的内容,从而产生了冲突。我没有意识到我有相同的id所以一切似乎都很好,没有错误消息,但文字根本没有改变。因此,我建议为id.

于 2015-01-23T21:46:15.990 回答
2

我希望您的处理程序在 UI 线程中运行。也尝试这样做:将您的字符串分配给一个变量并使用该变量,因为它需要字符序列。

String temp = "Got it!";
chatbox.setText(temp);
于 2013-08-21T00:36:14.603 回答
2

你没有给我们太多的继续。

您应该查看异常堆栈跟踪,而不是向控制台打印消息:e.printStackTrace();

但是从这里开始,如果我不得不猜测,看起来您要么将 TextView 的文本设置在主线程之外,要么 - 根据您发布的内容,这似乎不太可能 - 您的 TextView 尚未设置并且您有空指针异常。

于 2013-08-21T01:12:16.893 回答
1

当 textColor 与 View 的背景颜色相同时,文本也看不见,所以可以定义一个 textColor 来解决

于 2020-03-13T08:48:00.753 回答
1

就我而言,我发现有 aTextWatcher和 aFilter链接到 my Textview,它们都包含一个阻止更新我的Textview值的逻辑。
因此,除了其他解决方案之外,您还可以检查您Textview是否链接到任何TextWatcherFilter然后跟踪它。

于 2019-01-02T10:47:06.287 回答
0

就像这样没关系!

private void setUpViews() {
    chatbox = (TextView) findViewById(R.id.chatbox);
    chatbox.setText("Got it!");
}
于 2013-08-21T00:54:58.590 回答
-1

你发消息了吗?例如:

            Message message=new Message();
        message.what=1;
        mHandler.sendMessage(message);
于 2013-08-21T00:37:10.157 回答