आप लाइन 1000 में मंच स्रोत कोड here में PreferenceActivity.java पर एक नज़र डालें तो आप देख सकते हैं कि आपके इरादे startActivity startActivity(header.intent);
के माध्यम से कहा जाता है में और startActivityForResult के माध्यम से नहीं, इसलिए मुझे नहीं लगता कि यह संभव है।
हालांकि आप onHeaderClick
फ़ंक्शन को प्राथमिकता के onActivityResult
के साथ ओवरराइड करने का प्रयास कर सकते हैं और देखें कि क्या होता है। मैंने इसे स्वयं नहीं किया, इसलिए मुझे नहीं पता और एक अच्छा मौका है कि यह दृष्टिकोण भविष्य के संस्करणों में टूट जाएगा।
लेकिन शायद एक और दृष्टिकोण है जो आपके लिए काम कर सकता है। जैसा कि मैं आपके संदर्भ प्रश्न से देख सकता हूं, आप एक इरादे के माध्यम से एक गतिविधि शुरू कर रहे हैं। यदि यह गतिविधि सेटिंग्स संपादन के लिए है तो यह सही दृष्टिकोण नहीं है क्योंकि एंड्रॉइड सिर्फ इस गतिविधि को लॉन्च करने के लिए इस इरादे का उपयोग करता है और कुछ भी नहीं। मेरी राय में इसे अनुकूलित करने के लिए किसी भी उपलब्ध लोगों को विस्तारित करके अपनी विशिष्ट वरीयता गतिविधि बनाना बेहतर है। यहाँ मेरी अनुकूलित ListPreference कि मैं क्रम में उपयोग उपयोगकर्ता एक आवेदन का चयन करने के लिए है:
public class CustomSelectAppPreference extends ListPreference {
//----- Constructor -----
public CustomSelectAppPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
//----- Constructor END -----
//----- Public Code -----
public void SetResult(String packageName) {
if(this.callChangeListener(packageName)) {
Editor edit = this.getSharedPreferences().edit();
edit.putString(this.getKey(), packageName);
edit.commit();
}
this.getDialog().dismiss();
}
//----- Public Code END -----
//----- ListPreference Overrides -----
@Override
protected void onPrepareDialogBuilder(Builder builder) {
Log.d("CustomSelectAppPreference", "onPrepareDialogBuilder");
super.onPrepareDialogBuilder(builder);
String selectedPackage = this.getSharedPreferences().getString(this.getKey(), "");
ListAdapter listAdapter = (ListAdapter) new ApplicationsArrayAdapter(this.getContext(), Utilities.getInstalledApplications(this.getContext(), selectedPackage), this);
builder.setAdapter(listAdapter, this);
}
//----- ListPreference Overrides END -----
}
और मैं इस तरह मेरे preferences.xml में यह उपयोग कर रहा हूँ:
<PreferenceScreen android:key="connection_screen"
android:title="@string/wpref_Connection_Screen_title"
android:summary="@string/wpref_Connection_Screen_summary"
android:shouldDisableView="true">
<com.test.app.CustomSelectAppPreference android:key="userSelectedApplication"
android:title="@string/wpref_userSelectedApplication_title"
android:summary="@string/wpref_userSelectedApplication_summary"
android:dialogTitle="@string/userselectedApplication_dialogTitle"
android:entries="@array/selectedapps_dummy_actions"
android:entryValues="@array/selectedapps_dummy_actionsvalues"
android:defaultValue=""
android:shouldDisableView="true"/>
</PreferenceScreen>
इस दृष्टिकोण मैं का उपयोग करके वरीयताओं के बारे में एंड्रॉइड के नियमों को तोड़ने के बिना मेरे उपयोगकर्ता द्वारा इस गतिविधि में सबकुछ नियंत्रित कर सकता है।
उम्मीद है कि इससे मदद मिलती है।
संभावित डुप्लिकेट: http://stackoverflow.com/q/3385075/291827 –