TextViews不会在Android UI中更新

时间:2012-11-04 08:56:43

标签: android android-layout android-intent bluetooth textview

我们有两个活动,一个是通过蓝牙连接和管理blutooth,另一个是更新UI,我们想要更新包含TextViews的GUI。 我们成功地在两个活动中发送和接收消息,反之亦然。

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的TextViews。

请帮助我解决问题。 提前致谢

2 个答案:

答案 0 :(得分:2)

首先你的董事会课程太大了。 java文件中有3 500行是个坏主意。设计更多,分离和拆分东西。你错过了IT的分歧和征服原则。

在你的情况下,tv为null。你如何以及何时获得它的参考?如果你在onCreate方法中使用了findViewById(在调用super.onCreate之后),它应该可以工作。

答案 1 :(得分:0)

对TextView' tv'的引用一片空白。使用findViewById()或其他适当的方法在某处初始化它。

检查您的范围等,以便在您调用setText()方法时正确维护引用。