我正在编写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);
}
提前感谢您的帮助。 艾玛。
答案 0 :(得分:0)
logcat输出中是否有堆栈跟踪?您可能会发现您正在尝试从另一个线程更新UI线程。如果是这种情况,则需要使用runOnUiThread()更新该视图。这是一个例子:
runOnUiThread(new Runnable() {
public void run() {
DivingData.setText(newText);
}
});