我知道有很多类似的线程,但我已经完成了它们仍然无法弄清楚问题。我的程序到达处理程序,但它总是返回捕获异常“消息未处理。”
我宣布了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" />
答案 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)
就我而言
我发现有一个TextWatcher
和Filter
链接到我的Textview
两者都包含阻止更新我的Textview
值的逻辑
因此,除了其他解决方案
您可以检查您的Textview
是否链接到任何TextWatcher
或Filter
,然后进行跟踪。
答案 6 :(得分:-1)
Message message=new Message();
message.what=1;
mHandler.sendMessage(message);