Question

Je suis d'exécution n-couche PreferenceActivities 1ère couche PreferenceActivity est chargé de la préférence des en-têtes.

Premier en-tête crée fragment de paramètres qui est un PreferenceFragment.La seconde est une activité du navigateur (2ème est un exemple de developer.android.com) qui ouvre l'Url spécifiée.Le troisième je veux être le prochain niveau de PreferenceAtivity qui sera également chargé de la préférence des en-têtes.

Deux premiers du bon travail, mais le 3ème est plantage d'une application, à l'exception:

"android.contenu.ActivityNotFoundException:Pas d'Activité pour gérer l'Intention { act=android.l'intention.d'action.VUE dat=com.mycompany.myapp.l'interface utilisateur.MyPreferenceActivity} "

MyPreferenceActivity déclaré dans le fichier de manifeste.Probablement déclaration d'activité en main_headers.xml est mal, mais je n'ai pas trouver dans les références de tout conseil pour le faire corriger.Essayé plusieurs variantes, ils n'ont pas de travail.

Exemple, j'ai utilisé: http://developer.android.com/reference/android/preference/PreferenceActivity.html

Toutes les pensées pourquoi ça ne marche pas pour moi, ou comment la prochaine PreferenceActivity peut être appelé?Fondamentalement, j'ai juste besoin de démarrer une activité à partir de l'en-tête, qui doit être très simple mais je suis en manque de quelque chose.

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>
Était-ce utile?

La solution

Si vous souhaitez démarrer une activité explicite de votre troisième préférence faites ceci:

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

Autres conseils

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

et d'ajouter le code ci-dessous dans le fichier 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 vous créez des préférences en utilisant java, vous pouvez obtenir le même résultat par,

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top