【问题标题】:android TextView setText not workingandroid TextView setText不起作用
【发布时间】:2020-03-13 16:48:00
【问题描述】:

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

我声明了 TextView private TextView chatbox;

在 onCreate 下我有:

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

setUpViews() sn-p 的样子:

 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" />

【问题讨论】:

  • 你遇到了什么异常?

标签: android textview


【解决方案1】:

为了将来参考,我有多个片段,一个用于 ViewPager 中的每个选项卡。一个 TextView 在两个片段中具有相同的id,这造成了冲突。我没有意识到我有相同的id,所以一切似乎都很好,没有错误消息,但文本根本没有改变。因此,我建议为 id 使用唯一名称。

【讨论】:

  • 我也遇到过同样的问题。并且想知道为什么它应该是唯一的,如果不同的页面具有相同的布局。在我的情况下,设置不同的 id 不起作用,但是 textView.requestLayout() 做了这件事,也对我有用: textView.setVisibility(View.INVISIBLE); textView.setVisibility(View.VISIBLE);
  • 我遇到了类似的问题,Activity 中的 TextView 与 RecyclerView 中的 TextView 的 id 相同(相同的 Activity)。当为第一个 TextView 调用 findViewById() 时,它将引用与 RecyclerView 中的 TextView 混合在一起。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          这样就好了!

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

          【讨论】:

            【解决方案7】:

            你发消息了吗? 例如:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-08-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多