我们有两项 Activity ,一项是通过蓝牙建立连接并管理蓝牙,另一项是更新 UI,我们要更新包含 TextView 的 GUI。 我们在两个 Activity 中成功发送和接收消息,反之亦然。
private OnMessageReceivedListener dataReceivedListener = new OnMessageReceivedListener() {
public void OnMessageReceived(String device, String message) {
//t.setText(message);
Log.d("Message" , message);
msg = message;
UpdateGUI();
}
};
上面的函数收到了消息,我们成功了。
private void UpdateGUI() {
//i++;
//tv.setText(String.valueOf(i));
myHandler.post(myRunnable);
}
final Runnable myRunnable = new Runnable() {
public void run() {
btBoard.UpdateYoursBoard(mystring);
}
};
连接类的上述函数调用我们的 GUI 类的方法并向其发送收到的消息。
在我们的 GUI 类中我们需要这个
public void UpdateYoursBoard(String positions)
{
Log.d("Positions" , positions);
tv.setText(positions);
}; 我们成功地收到了 log.d 中的消息,但是当我们想要更改 TextView 文本时,它会出现以下错误。
java.lang.NullPointerException
at net.clc.bt.Board.UpdateYoursBoard(Board.java:3460)
注意:我们正在使用蓝牙,并且同时连接了 3 部手机,UpdateYourBoard 将更改 3 部手机 GUI 的 TextView。
请帮我解决这个问题。 提前致谢
最佳答案
首先,你的 Board 类太大了。 java 文件中有 3 500 行是非常糟糕的主意。设计更多,解耦和拆分事物。您忽略了 IT 的分而治之的原则。
在您的情况下,电视为空。您如何以及何时获得它的引用?如果您在 onCreate 方法中使用了 findViewById(在调用 super.onCreate 之后),它应该可以工作。
关于android - Android UI 中的 TextView 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217283/