Pregunta

Hola estoy lanzando la actividad de la pantalla de preferencias. La actividad se comparte entre tres preferencias. Me pregunto si puedo establecer extras para esta actividad en XML

<Preference
    android:key="action_1"
    android:title="@string/action_1_title"
>
    <intent
        android:action="com.package.SHAREDACTION"
    >

    </intent>
</Preference>

Me pregunto si puedo hacer algo como

<extras>
     <item
      android:name=""
      android:value=""/>
</extras>

Todo lo que necesito hacer para pasar un entero de verdad. Puedo diferentes acciones y medidas de verificación en lugar de extras.

¿Fue útil?

Solución

A medida que los extras no son constantes, debe pasar en el código java en lugar de XML.

Intent intent = new Intent( this, YourTargetActivity.class );
intent.putExtra( EXTRAS_KEY, extras );
yourPref.setIntent( intent );

Otros consejos

Tengo una respuesta, se puede utilizar de esta manera:

<Preference
    android:key="xxx"
    android:title="xxx"
    android:summary="xxx">
   <intent android:action="xxx" >
         <extra android:name="xxx" android:value="xxx" />
    </intent>        

</Preference>

Añadir a la preferencia del archivo preference.xml:

<Preference android:title="user" android:key="user"/>            

Y a continuación, se puede utilizar un setOnPreferenceClickListener para lanzar una Intención con extras.

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

Hay un campo de datos para los intentos descritos en la documentación aquí .

Se utiliza en la aplicación de demostración API para las preferencias XML para poner en marcha un intento en el ejemplo Preferencias Intención.

ejemplo relacionadas con XML de esa demostración en preferences.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>

Tal vez este enfoque podría funcionar para usted?

trabajando para mí.

<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>

Para enviar correo electrónico o tasa en el mercado es necesario utilizar algo así como

<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>

Puede utilizar

<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>

para enviar los datos de intención. Luego, en su actividad sólo tiene que utilizar:

getIntent().getDataString()

En realidad, no una respuesta a su pregunta, pero muy relacionados. Tal vez alguien le resultará útil. Para más nueva API (> 11) que tiene un archivo de preferencias cabeceras y puede definir las intenciones personalizados para una de las cabeceras. Yo estaba tratando de añadir un extra a medida para uno de los encabezados y la solución que encontré es la siguiente:

En su preferencia-headers.xml:

<header 
        android:fragment="com.mypackage.MyPreference$Prefs1Fragment"
        android:title="Intent"
        android:summary="Launches an Intent.">
</header>

En la clase "MyPreference" (se extiende PreferenceActivity) tiene:

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();
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top