Lancer l'activité à partir de l'écran des préférences (intention définie dans le fichier XML)
Dans mon fichier de préférences je vais cette
<PreferenceCategory android:title="Title" >
<Preference android:title="title" >
<intent android:action="com.my.package.MainActivity"
/>
</Preference>
</PreferenceCategory>
L'activité est créée dans le fichier de manifeste , mais j'ai toujours
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.my.package.MainActivity }
Comment puis-je commencer l'activité à partir de l'écran des préférences ?
source d'informationauteur Lukap
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème mais aucune solution, j'ai cherché sur stackoverflow résolu mon activitynotfound Exception.
Voici la solution que j'ai trouvé de ici:
définir un filtre d'intention dans votre activité à l'intérieur de manifest.xml
Dans votre manifeste :
C'est la définition de votre activité [votre package].MainActivity.
Aussi, essayez d'utiliser un PreferenceScreen:
pour plus de détails, veuillez consulter ce lien...
le démarrage d'une activité de preferences.xml
Ce n'est pas la bonne façon de commencer une intention de xml. Le
android:action
champ n'est pas pour le nom de l'activité que vous essayez de démarrer; il décrit une action pour un intent-filter (commeandroid.intent.action.VIEW
ouandroid.intent.action.EDIT
) qu'une autre activité peut fournir.Voir cette réponse pour l'utilisation correcte de
<intent
>, android:action, etc: https://stackoverflow.com/a/3751306/582004Assurez-vous que dans votre AndroidManifest.xml votre activité contient une
<intent-filter
> avec le<action
> que vous demandez dans votre PreferenceActivity (dans la réponse de référence, c'estandroid.intent.action.VIEW
).essayer cette
Vous devriez faire quelque chose comme ceci dans votre déclaration d'intention à l'intérieur de la préférence xml:
Remarque:
targetPackage
doit être le même que l'package
propriété déclarée à l'intérieur de lamanifest
balise deAndroidManifest.xml
. C'est parfois difficile, donc, de lire à nouveau.Donc équivalent
AndroidManifest.xml
aurait déclaration comme ceci: