2016-05-17 63 views
0

在我的简单应用程序蓝牙教程我连接一个蓝牙扫描枪,并以字符串的形式从它接收扫描。我有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类,我amtrying覆盖在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); 
} 
} 

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

+0

只有当TestingScanner活动是当前活动(或焦点活动)时才会调用覆盖函数。 – RScottCarson

+0

这个不清楚。 'TestingScanner'不会扩展'MessageHandler',所以目前还不清楚为什么你认为'TestingScanner.receiveScans()'应该被调用。 –

回答

1

您正在从MainActivity调用receiveScans(),因此将调用MainActivity的receiveScans()。从MainActivity(Base class)中,除非您创建了TestingScanner的对象并在该对象上调用receiveScans(),否则您将无法调用TestingScanner(Derived类)的receiveScans()。