覆盖函数不接收数据?

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()。