如何从首选项屏幕启动意向结果?

在从首选项屏幕启动的意图返回结果时,我需要帮助

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

我想要用户select设备…在首选筛选我显示“select设备”..当用户点击,另一个屏幕是意图启动所有设备列出。 用户select设备。

现在我怎么知道用户select了哪个设备? 我想在摘要中更新。

PLS。 让我知道谢谢

Solutions Collecting From Web of "如何从首选项屏幕启动意向结果?"

我得到了答案,希望它能帮助像我这样的人…

不要像上面代码中那样创build偏好时提及意图。提及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); 

然后创buildOnPreferenceClickListner,在这里做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(); } } } } 

谢谢