android TextView setText无效

use*_*568 13 android textview

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

我宣布了TextView private TextView chatbox;

在onCreate下我有:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setUpViews();
        setUpListener();
    }
Run Code Online (Sandbox Code Playgroud)

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

 private void setUpViews() {
    chatbox = (TextView) findViewById(R.id.chatbox);
    }
Run Code Online (Sandbox Code Playgroud)

处理器:

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.");
            }

        }
    };
Run Code Online (Sandbox Code Playgroud)

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" />
Run Code Online (Sandbox Code Playgroud)

Hud*_*son 45

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

  • 我遇到过同样的问题。想知道为什么不同的页面具有相同的布局时为什么它应该是唯一的。在我的情况下,设置不同的id无效,但textView.requestLayout()可以完成该操作,对我也有用:textView.setVisibility(View.VISIBLE); (2认同)

Sus*_*hil 4

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

String temp = "Got it!";
chatbox.setText(temp);
Run Code Online (Sandbox Code Playgroud)