2010-08-02 26 views
7

我需要幫助歌廳結果從意圖從 偏好屏幕推出回到[Android]如何從偏好屏幕啓動的意圖獲得結果?

// Intent preference 
    DevicePref = 
    getPreferenceManager().createPreferenceScreen(this); 

    // Show a Screen with list of Devices Discovered 
    Intent i = new Intent(this,getDevice.class); 
    DevicePref.setIntent(i); 
    DevicePref.setTitle("Select Device"); 
    DevicePref.setSummary(mSelectedDevice); 
    deviceOptionsCat.addPreference(DevicePref); 

我希望用戶選擇設備......在偏好screeen我秀「選擇 設備」。當用戶點擊的是,另一通過意圖 啓動屏幕,其中列出所有設備。用戶選擇設備。

現在我怎麼知道用戶選擇了哪個設備?我想在摘要中更新 。

請注意。讓我知道 感謝

回答

9

我得到了答案,希望這將有助於我這樣的人......

,同時創造偏好就像我在上面的代碼中沒有別提意圖..上OnPreferenceClickListener提到的意圖,然後做StartActivityForResult()

// Intent preference 
    DevicePref = getPreferenceManager().createPreferenceScreen(this); 
    // Show a Screen with list of Devices Discovered 

    DevicePref.setOnPreferenceClickListener(onPreferenceClick); 

    DevicePref.setTitle("Select Device"); 
    DevicePref.setSummary(mSelectedDevice); 
    deviceOptionsCat.addPreference(DevicePref); 

然後創建OnPreferenceClickListner這裏做StartActivityFromResult()

OnPreferenceClickListener onPreferenceClick = new Preference.OnPreferenceClickListener() { 
     public boolean onPreferenceClick(Preference preference) { 

      if (preference ==DevicePref) 
      { 
       Intent i = new Intent(DevuiceOptions.this,getDevice.class); 
       DevicePref.setIntent(i); 
       startActivityForResult(i,CHOOSE_DEVICE); 

      } 
      return true; 
     } 
    }; 

最後得到結果句柄onActivityResult並更新Summary字段。

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 

     switch (requestCode) { 

      case Constants.CHOOSE_DEVICE: 
      { 
       if (data!=null) 
       { 
        Bundle b = data.getExtras(); 
        mSelectedDevice = (String) b.get("Name"); 
        UpdatePreferences(); 
       } 

      } 
    } 
} 

感謝

+1

這個工作對我..謝謝!最初,僅在第二次調用onActivityResult。這是因爲onPreferenceClick返回false。 – diptia 2013-02-24 19:34:13