在计时器事件上在android屏幕上显示一个字符串

时间:2014-09-09 15:40:32

标签: java timer textfield

我正在编写n android应用程序作为我论文的一部分,需要在计时器事件期间显示/更新/追加数据到Android屏幕上 - 如下所示:

(请原谅可能的错误术语并随时更正)

我在应用程序中有几个类,但是我正在尝试在" BlueActivity"之间进行交互。和" BuzzActivity"。

" BlueActivity"控制蓝牙。它打开/关闭蓝牙,建立连接并控制插座。

" BuzzActivity"有一个按钮" BUZZME":onClick,BuzzActivity传递(在场景之后)到#34; BlueActivity"它将数据包发送到配对设备(devDuino,然后将无线电发送到可穿戴设备。可穿戴设备无线电将数据读数回复给devDuino)。配对设备然后将此数据回复给" BlueActivity"通过监听定时器的套接字读入。数据采用字符串格式,称为" retstr"。计时器在" BlueActivity"" OnCreate()方法。

我需要得到" retstr"来自" BlueActivity"进入" BuzzActivity"并在屏幕上更新。

我试过.setText并且在App崩溃的意义上失败了。从研究中我听说需要一个处理程序来动态地"更新视图?

请有人澄清一下。

代码段如下:

BlueActivity:     ......... //这里的东西     // final String TAG =" On create&#34 ;;

    new Timer().schedule(new TimerTask() {
         @Override
         public void run() {
            //Log.i(TAG, "In timer running");
            String retstr;
            retstr = mConnectThread.listen();  //Method to get my data from bluetooth packet
            //String text = String.valueOf(retstr); //failed attempts
            //BuzzActivity.DivingData.setText(text);
            Log.i(TAG, "retstr"); //Works like a charm to print out to log cat
            }
    }, 1000, 1000); 

    mConnectThread = new ConnectThread(mmDevice);
    mConnectThread.start();
}

BuzzActivity

.......//blueConnecter is called from the .xmlfile controling the buzz button "on click method"

public void blueConnecter(View view){
        DivingData = (TextView) findViewById(R.id.DivingDataTextField);
        BlueActivity.visible(view); 
    }

提前感谢您的帮助。 艾玛。

1 个答案:

答案 0 :(得分:0)

logcat输出中是否有堆栈跟踪?您可能会发现您正在尝试从另一个线程更新UI线程。如果是这种情况,则需要使用runOnUiThread()更新该视图。这是一个例子:

runOnUiThread(new Runnable() { 
            public void run() {
                DivingData.setText(newText);
            }
        });