gpt4 book ai didi

java - 重写的函数未接收数据?

转载 作者:行者123 更新时间:2023-12-01 09:55:16 25 4
gpt4 key购买 nike

在我的简单应用程序蓝牙教程中,我连接了蓝牙扫描枪并以字符串形式接收来自它的扫描。我在 MainActivity 中拥有所有连接代码,现在我要做的就是在另一个 Activity 中覆盖我的 receiveScans(String s) 函数,以便我可以使用用于其他目的的数据。但是,receiveScans(String s) 始终在 MainActivity Activity 中调用,而不会在 TestingScanner Activity 中调用。为什么是这样?我需要做什么?

这是 MainActivity 中我的 Handler 的一段代码,它将扫描到的数据发送到我的 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){

}

这是我试图覆盖其中的 receiveScans 函数的 TestingScanner 类。我只是尝试根据扫描仪的字符串在 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(基类)中,您将无法调用TestingScanner(派生类)的receiveScans(),除非您创建TestingScanner 的对象并在该对象上调用receiveScans()。

关于java - 重写的函数未接收数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37285781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com