在我的简单应用程序蓝牙教程我连接一个蓝牙扫描枪,并以字符串的形式从它接收扫描。我有MainActivity
中的所有连接代码,现在我所要做的只是在另一个活动中覆盖我的receiveScans(String s)
函数,以便我可以将这些数据用于其他目的。但是,receiveScans(String s)
始终在MainActivity
活动中被调用,并且从未在TestingScanner
活动中遇到。为什么是这样?我需要做什么?重写函数没有接收数据?
这里的代码位 - 我Handler
- 在MainActivity
发送被扫描进在我receiveScans()
功能MainActivity
数据。
private MessageHandler mHandler = new MessageHandler();
private class MessageHandler extends android.os.Handler{
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case MESSAGE_READ: // Received scan, get information...
byte[] readBuf = (byte[]) msg.obj;
String scan = new String(readBuf);
receiveScans(scan); // Send string of info to recieveScans
break;
default:
super.handleMessage(msg);
}
}
}
protected void receiveScans(String s){
}
这里是TestingScanner
类,我amtrying覆盖在receiveScans功能。我只是想根据扫描仪发送的字符串设置文本在TextView
。
public class TestingScanner extends MainActivity {
TextView scannerText ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_scanner);
scannerText = (TextView)findViewById(R.id.scanner_text);
}
@Override
protected void receiveScans(String s) {
super.receiveScans(s);
scannerText.setText(s);
}
}
重写函数永远不会被调用。
只有当TestingScanner活动是当前活动(或焦点活动)时才会调用覆盖函数。 – RScottCarson
这个不清楚。 'TestingScanner'不会扩展'MessageHandler',所以目前还不清楚为什么你认为'TestingScanner.receiveScans()'应该被调用。 –