android TextView setText无效

时间:2013-08-21 00:28:33

标签: android textview

我知道有很多类似的线程,但我已经完成了它们仍然无法弄清楚问题。我的程序到达处理程序,但它总是返回捕获异常“消息未处理。”

我宣布了TextView private 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" />

7 个答案:

答案 0 :(得分:42)

如果将来在这个问题后出现一些可怜的灵魂谷歌,我终于找到了问题。我有多个片段,一个用于我的ViewPager中的每个选项卡,其中TextView在两个片段中具有相同的id,因此发生冲突。我没有意识到我有相同的ID所以一切似乎都很好,没有错误信息,但文本根本没有改变。只需更改ID。

答案 1 :(得分:2)

你没有给我们太多的帮助。

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

但是从这里开始,如果我不得不猜测,看起来你要么将TextView的文本设置在主线程之外,要么 - 根据你发布的内容看起来不太可能 - 你的TextView还没有被设置,你有一个空指针异常。

答案 2 :(得分:1)

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

String temp = "Got it!";
chatbox.setText(temp);

答案 3 :(得分:1)

当textColor与View的背景色相同时,文本也会显示为不可见,因此您可以定义textColor来解决它

答案 4 :(得分:0)

就像这样可以!

private void setUpViews() {
    chatbox = (TextView) findViewById(R.id.chatbox);
    chatbox.setText("Got it!");
}

答案 5 :(得分:0)

就我而言
我发现有一个TextWatcherFilter链接到我的Textview
两者都包含阻止更新我的Textview值的逻辑
因此,除了其他解决方案
您可以检查您的Textview是否链接到任何TextWatcherFilter,然后进行跟踪。

答案 6 :(得分:-1)

你发邮件了吗? 例如:

            Message message=new Message();
        message.what=1;
        mHandler.sendMessage(message);