2016-05-17 3 views
0

В моем простом приложении Учебное пособие по Bluetooth Я подключаю пистолет сканирования Bluetooth и получаю от него сканирование в виде строк. У меня есть весь код подключения в 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

Вы вызываете метод receiveScans() из MainActivity, поэтому будет вызван метод полученияScans() MainActivity. Из MainActivity (базового класса) вы не сможете вызвать метод receiveScans() TestingScanner (Derived class), если только вы не создадите объект TestingScanner и не вызовите метод receiveScans() на этом объекте.