android - Android UI 中的 TextView 未更新

标签 android android-layout android-intent bluetooth textview

我们有两项 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/

相关文章:

java - 永不关闭的位置后台服务

android - Genymotion 虚拟机将 Theme.Holo.DialogWhenLarge 主题 Activity 显示为正常 Activity

Android 对底层 API 的涟漪效应

java - 具有图像叠加中心和滚动行为的工具栏

java - 想要抛出打开新 Activity 的 Intent ,但不断崩溃

android - 搜索过滤器空异常

java - 使用 YASEA 串流 key

android - 如何在真正的平板设备上运行我的 Android 应用程序?

android - 单击通知后返回当前正在运行的 Activity

android - 在android中以编程方式结束来电