2015-11-13 2 views
0

Я хочу знать, как использовать коммутационный футляр при использовании интерфейса handleMessage. как показано ниже в коде, в методе run() я отправляю разные сообщения, а У меня есть только один обработчик с интерфейсом handleMessage(), я хочу знать, как использовать коммутационный футляр для обработки различных отправленных сообщений.Как использовать переключатель-чехол с ручкой Интерфейс сообщений

в OnCreate:

private void initObjs() { 
    Log.w(TAG, CSubTag.bullet("initObjs")); 

    this.mHandler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
     .. 
     .. 
     } 
    }; 
} 

в беге():

public void run() { 

     //initiating connection 
     BluetoothSocket rfcSocket = mSPPCtrl.rfcConnect(); 
     if (rfcSocket.isConnected()) { 
      Message msg = mHandler.obtainMessage(); 
      Bundle b = new Bundle(); 
      b.putString("CONNECTED", "RFC-SOCKET CONNECTED"); 
      msg.setData(b); 
      mHandler.sendMessage(msg); 
      //assigning stream variables 
      try { 
       this.mRFCOS = rfcSocket.getOutputStream(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      try { 
       this.mRFCIS = rfcSocket.getInputStream(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      Message msg = mHandler.obtainMessage(); 
      Bundle b = new Bundle(); 
      b.putString("DISCONNECTED", "RFC-SOCKET NOT CONNECTED"); 
      msg.setData(b); 
      mHandler.sendMessage(msg); 
     } 

ответ

0
  1. before sendMessage (msg), укажите msg.what значение int, например 0,1,2 ...

  2. в handleMessage(), используйте swith case;

+1

бы у пожалуйста, уточнить с кодом образца ?? потому что я не знаю, как назначить msg.what значение – LetsamrIt

+0

{ \t Сообщение msg = mHandler.obtainMessage(); \t Bundle b = new Bundle(); \t if (rfcSocket.isConnected()) { b.putString ("CONNECTED", "RFC-SOCKET CONNECTED"); msg.what = 0; } else { b.putString ("ОТКЛЮЧЕНО", "RFC-SOCKET NOT CONNECTED"); msg.what = 1; } \t msg.setData (b); \t mHandler.sendMessage (msg); } – XuSing

0

Определение констант сообщение как

public static final int STATE_CONNECTED = 1; 
public static final int STATE_DISCONNECTED = 2; 

Handler:

@Override 
public void handleMessage(Message msg) { 
    switch(msg.what) { 
     case STATE_CONNECTED: 
      //do your stuff 
      break; 
     case STATE_DISCONNECTED: 
      //do your stuff 
      break; 
     default : 
      //default condition 
      break; 
    } 
} 

А в перспективе()

public void run() { 
     ... 
     if (rfcSocket.isConnected()) { 
      Message msg = mHandler.obtainMessage(STATE_CONNECTED); 
      ... 

     } else { 
      Message msg = mHandler.obtainMessage(STATE_DISCONNECTED); 
      ... 
     } 
} 
+0

как msg.what присвоено значение 1 или 2 – LetsamrIt

+0

передать его в getMessage() – abhishesh