2016-11-21 4 views
0

私のアンドロイドプロジェクトには、IUSBDeviceObserverインターフェイスを実装するjavaクラスがあります。 onUSBDeviceChanged()関数でハンドラからデータを取得する方法

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); 

    } 
} 

私は、文字列値を取得しますがどのように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

あなたの答えをありがとう。もう1つQn。 Handlerからデータを取得してOnCreateメソッドに更新する方法 –

関連する問題