2016-11-21 4 views
0

В моем проекте андроида у меня есть класс java, который реализует интерфейс IUSBDeviceObserver.Как получить данные от обработчика

public class LensPickerActivity extends CarActivity 
    implements LensPickerSelectionHandler,IUSBDeviceObserver{ 

    private Context mContext; 
    private PackageManager mPackageManager; 
    private PagedListView mPagedListView; 
    MediaReceiver mediaReceiver;  
    private String mDeviceName = ""; 
    private static final int UPDATE_USB_NAME = 1 

    public LensPickerActivity(Proxy proxy, Context context, Car car) { 
     super(proxy, context, car);  

     mContext = context; 
     mPackageManager = mContext.getPackageManager(); 
     mSharedPrefs = LensPickerUtils.getFacetSharedPrefs(mContext); 


    } 

    // override function from IUSBDeviceObserver 
    @Override 
    public void onUSBDeviceChanged(String device) { 

     mDeviceName = device;   
     Log.d(TAG,"device name ++++"+" "+mDeviceName); 
     getAttachedDeviceName(mDeviceName); 

    } 
} 

В onUSBDeviceChanged функция() Я получаю значение String, но как передать эту строку в LensPickerActivity контексте?. Я имею в виду главную нить. Я использую Handler mechanisam, но он не работает для меня. ниже - класс Hanlder

private void getAttachedDeviceName(String deviceName) { 
     Message message = mHandlerPhone.obtainMessage(UPDATE_USB_NAME); 
     if (deviceName == null) return; 
     message.obj = deviceName; 
     Log.d(TAG, "aTTCHEDdEVICE Name :: " + deviceName); 
     mHandlerPhone.sendMessage(message); 
    } 

    Handler mHandlerPhone = new Handler() { 
     public void handleMessage(Message msg) { 
      switch (msg.what) { 
       case UPDATE_USB_NAME: 
        String aResponse = msg.getData().getString("message"); 
        Log.d(TAG, "aTTCHEDdEVICE Name handler :: " + aResponse); 
        break; 
       default: 

      } 
     } 
    }; 

В mHandlerPhone я получаю String null. Как получить значение String в главной теме.

Благодаря

+0

Это не должно составить. Ваш код «Обработчик» находится вне тела метода. – ifly6

ответ

0

msg.obj содержит ваш String, поэтому пытаются использовать:

Handler mHandlerPhone = new Handler() { 
     public void handleMessage(Message msg) { 
      switch (msg.what) { 
       case UPDATE_USB_NAME: 
        String aResponse = (String) msg.obj; 
        Log.d(TAG, "aTTCHEDdEVICE Name handler :: " + aResponse); 
        break; 
       default: 

      } 
     } 
+0

Спасибо за ваш ответ. Еще один Qn. Как получить данные из обработчика и обновить до метода OnCreate –

Смежные вопросы