هل هناك أي طريقة لوضع إضافات في النية من التفضيلات؟
-
21-09-2019 - |
سؤال
مرحبًا ، سأطلق نشاطًا من شاشة التفضيلات. يتم مشاركة النشاط بين ثلاثة تفضيلات. أتساءل عما إذا كان بإمكاني ضبط إضافات لهذا النشاط في XML
<Preference
android:key="action_1"
android:title="@string/action_1_title"
>
<intent
android:action="com.package.SHAREDACTION"
>
</intent>
</Preference>
أتساءل عما إذا كان بإمكاني فعل شيء مثل
<extras>
<item
android:name=""
android:value=""/>
</extras>
كل ما أحتاج إلى القيام به لتمرير عدد صحيح حقًا. يمكنني إجراءات مختلفة والتحقق من الإجراء بدلاً من الإضافات.
المحلول
نظرًا لأن إضافاتك ليست ثوابت ، يجب عليك تمريرها في كود Java بدلاً من XML.
Intent intent = new Intent( this, YourTargetActivity.class );
intent.putExtra( EXTRAS_KEY, extras );
yourPref.setIntent( intent );
نصائح أخرى
حصلت على إجابة ، يمكنك استخدامها مثل هذا:
<Preference
android:key="xxx"
android:title="xxx"
android:summary="xxx">
<intent android:action="xxx" >
<extra android:name="xxx" android:value="xxx" />
</intent>
</Preference>
أضف التفضيل إلى ملف التفضيل. xml:
<Preference android:title="user" android:key="user"/>
وبعد ذلك ، يمكنك استخدام SetOnPreferenCeClickListener لإطلاق نية مع الإضافات.
Preference userButton = (Preference) findPreference("user");
userButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(getActivity(), YourTargetActivity.class);
intent.putExtra(EXTRA, mUser);
startActivity(intent);
return true;
}
});
يوجد حقل بيانات للنوايا الموضحة في الوثائق هنا.
يتم استخدامه في تطبيق API التجريبي لتفضيلات XML لإطلاق نية في مثال تفضيلات النية.
مثال ذي صلة XML من هذا العرض التوضيحي في التفضيلات. xml:
<PreferenceScreen
android:title="@string/title_intent_preference"
android:summary="@string/summary_intent_preference">
<intent android:action="android.intent.action.VIEW"
android:data="http://www.android.com" />
</PreferenceScreen>
ربما يمكن أن يعمل هذا النهج من أجلك؟
العمل من أجلي.
<shortcut
android:enabled="true"
android:icon="@mipmap/xxx"
android:shortcutDisabledMessage="@string/xxx"
android:shortcutId="xxxx"
android:shortcutLongLabel="xxx"
android:shortcutShortLabel="xxx">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="xxx"
android:targetPackage="xxx">
<extra
android:name="intent_name"
android:value="true" />
</intent>
</shortcut>
لإرسال بريد إلكتروني أو معدل في السوق ، تحتاج إلى استخدام شيء مثل
<Preference
android:title="@string/title_intent_preference"
android:summary="@string/summary_intent_preference">
<intent android:action="android.intent.action.VIEW"
android:data="market://details?id=com.your_package" />
</Preference>
<Preference
android:title="@string/title_intent_preference"
android:summary="@string/summary_intent_preference">
<intent android:action="android.intent.action.VIEW"
android:data="mailto:your_email@gmail.com" />
</Preference>
يمكنك استخدام
<PreferenceScreen
android:title="@string/title_intent_preference"
android:summary="@string/summary_intent_preference">
<intent android:action="android.intent.action.VIEW"
android:data="hello world" />
</PreferenceScreen>
لإرسال بيانات النية. ثم في نشاطك ، استخدم ببساطة:
getIntent().getDataString()
في رئيس التفضيل الخاص بك. xml:
<header
android:fragment="com.mypackage.MyPreference$Prefs1Fragment"
android:title="Intent"
android:summary="Launches an Intent.">
</header>
في فئة "mypreference" (يمتد تفضيل النشاط) لديك:
public static class Prefs1Fragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(getActivity(), MyTargetActivity.class);
// set the desired extras, flags etc to the intent
intent.putExtra("customExtra", "Something that I used to know");
// starting our target activity
startActivity(intent);
// ending the current activity, which is just a redirector to our end goal
getActivity().finish();
}
}