Pregunta

Estoy implementando preferencias de la capa N, las preferencias de la primera capa, la capacidad de preferencias se carga de los cabezales de preferencias.

El primer encabezado crea fragmentos de configuración que es un fragmento de preferencia. El segundo es una actividad del navegador (2nd es un ejemplo de desarrollador.android.com) que abre URL especificada. El tercero quiero ser un siguiente nivel de preferenciatividad que también se cargará de los cabeza de preferencia.

Los primeros dos funcionan bien, pero 3rd está bloqueando una aplicación con la excepción:

"Android.Content.ActivityNotFoundException: ninguna actividad que se encuentra para manejar la intención {ACT = android.intent.action.view dat = com.mycompany.myapp.ui.mypreferenceactivity}"

MyPreferenceActivity declarada en el archivo manifiesto. Probablemente la declaración de actividad en main_headers.xml es incorrecta, pero no encontré en referencias ningún consejo sobre cómo hacerlo correctamente. Probé varias variaciones, no funcionaron.

Ejemplo que usé: http://developer.android.com/reference/android/preference/preferenceactivity.html

¿Alguna idea por qué no funciona para mí o cómo se puede llamar la próxima preferencia? Básicamente, solo necesito comenzar una actividad desde el encabezado, eso debería ser realmente simple, pero me falta algo.

public class MySettings extends PreferenceActivity 
{
    @Override
    public void onBuildHeaders(List<Header> target) 
    {
        loadHeadersFromResource(R.xml.main_headers, target);
    }
}

main_headers.xml:

<?xml version="1.0" encoding="utf-8"?>
<preference-headers
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <header android:title="Custom Settings"
        android:fragment="com.mycompany.myapp.ui.SettingsFragment" />

    <header android:title="Intent"
        android:summary="Launches an Intent.">
        <intent android:action="android.intent.action.VIEW"
                android:data="http://www.android.com" />
    </header>

    <header android:title="Another Preference Activity">
        <intent android:action="android.intent.action.VIEW"
            android:data="com.mycompany.myapp.ui.MyPreferenceActivity" />
    </header>
</preference-headers>
¿Fue útil?

Solución

Si desea comenzar una actividad explícita desde su tercera preferencia, haga esto:

<intent android:targetPackage="com.mycompany.myapp"
        android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" />

Otros consejos

 <header android:title="Intent"
    android:summary="Launches an Intent.">
<intent android:targetPackage="com.mycompany.myapp"
        android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" /></header>

y agregue el siguiente código en el archivo de Mainfest

<activity android:name=".activities.MyActivity" 
              android:label="@string/my_activity_title"
              android:theme="@android:style/Theme.Black.NoTitleBar">
        <intent-filter>
           <action android:name="com.example.myapp.activities.MyActivity" />
           <category android:name="android.intent.category.DEFAULT" />
       </intent-filter>
    </activity>

Si está creando preferencias usando Java, puede lograr el mismo resultado por,

PreferenceScreen editPhoneNumbersScreen = getPreferenceManager().createPreferenceScreen(mContext);
    editPhoneNumbersScreen.setTitle(getResources().getString(R.string.change_add_emergency_numbers));
    editPhoneNumbersScreen.setSummary(getResources().getString(R.string.summary_add_no));


 Intent i = new Intent(getApplicationContext(),TargetActivity.class);
i.putExtra("change numbers", true);
        editPhoneNumbersScreen.setIntent(i);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top