被覆盖的功能没有接收数据?

时间:2016-05-17 20:33:34

标签: java android bluetooth override

在我的简单应用蓝牙教程中,我连接蓝牙扫描枪并以字符串的形式接收扫描。我在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}}

重写的函数永远不会被调用。

1 个答案:

答案 0 :(得分:1)

您正在从MainActivity调用receiveScans(),因此将调用MainActivity的receiveScans()。从MainActivity(基类),您将无法调用TestingScanner(派生类)的receiveScans(),除非您创建TestingScanner的对象并在该对象上调用receiveScans()。