2016-11-21 16 views
0

在我的android項目中,我有實現IUSBDeviceObserver接口的java類。如何從處理程序獲取數據

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()函數我得到的字符串值,但如何傳遞字符串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。如何在主線程中獲取字符串值。

感謝

+0

這不應該編譯。你的'Handler'代碼看起來在方法體之外。 – 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。如何從Handler獲取數據並更新爲OnCreate方法 –

相關問題