在我的简单应用蓝牙教程中,我连接蓝牙扫描枪并以字符串的形式接收扫描。我在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
这是我正在试图覆盖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);
}
}
中设置文本。
{{1}}
重写的函数永远不会被调用。
答案 0 :(得分:1)
您正在从MainActivity调用receiveScans(),因此将调用MainActivity的receiveScans()。从MainActivity(基类),您将无法调用TestingScanner(派生类)的receiveScans(),除非您创建TestingScanner的对象并在该对象上调用receiveScans()。