覆盖函数不接收数据?
Overridden function not receiving data?
在我的简单应用程序 蓝牙教程 中,我连接了蓝牙扫描枪并以字符串的形式从中接收扫描。我在 MainActivity
中拥有所有连接代码,现在我要做的就是在另一个 activity 中覆盖我的 receiveScans(String s)
函数,以便我可以将数据用于其他目的。但是,receiveScans(String s)
总是在 MainActivity
activity 中被调用,并且永远不会在 TestingScanner
activity 中被调用。为什么是这样?我需要做什么?
这是 MainActivity
中的代码位 - 我的 Handler
- 将扫描的数据发送到 MainActivity
中我的 receiveScans()
函数中。
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){
}
这是我试图覆盖其中的 receiveScans 函数的 TestingScanner
class。我只是想根据扫描仪的字符串在 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);
}
}
永远不会调用覆盖的函数。
您正在从 MainActivity 调用 receiveScans(),因此将调用 MainActivity 的 receiveScans()。从 MainActivity(Base class)您将无法调用 TestingScanner(Derived class)的 receiveScans(),除非您创建 TestingScanner 的对象并在该对象上调用 receiveScans()。
在我的简单应用程序 蓝牙教程 中,我连接了蓝牙扫描枪并以字符串的形式从中接收扫描。我在 MainActivity
中拥有所有连接代码,现在我要做的就是在另一个 activity 中覆盖我的 receiveScans(String s)
函数,以便我可以将数据用于其他目的。但是,receiveScans(String s)
总是在 MainActivity
activity 中被调用,并且永远不会在 TestingScanner
activity 中被调用。为什么是这样?我需要做什么?
这是 MainActivity
中的代码位 - 我的 Handler
- 将扫描的数据发送到 MainActivity
中我的 receiveScans()
函数中。
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){
}
这是我试图覆盖其中的 receiveScans 函数的 TestingScanner
class。我只是想根据扫描仪的字符串在 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);
}
}
永远不会调用覆盖的函数。
您正在从 MainActivity 调用 receiveScans(),因此将调用 MainActivity 的 receiveScans()。从 MainActivity(Base class)您将无法调用 TestingScanner(Derived class)的 receiveScans(),除非您创建 TestingScanner 的对象并在该对象上调用 receiveScans()。