هل هناك أي طريقة لوضع إضافات في النية من التفضيلات؟

StackOverflow https://stackoverflow.com/questions/2082640

سؤال

مرحبًا ، سأطلق نشاطًا من شاشة التفضيلات. يتم مشاركة النشاط بين ثلاثة تفضيلات. أتساءل عما إذا كان بإمكاني ضبط إضافات لهذا النشاط في 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();
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top