Comment ouvrir une nouvelle activité en cliquant sur un élément dans listview?
Je ne peux pas démarrer une nouvelle activité en cliquant sur un élément de ma liste. Je veux que onItemClick
pouvez ouvrir le ApkInfoActivity
.. en Fait quand je clique rien ne se passe.
protected void onItemClick(ListView l, View v, int position, long id, AdapterView<?> parent) {
super.onListItemClick(l, v, position, id);
final ApplicationInfo app = applist.get(position);
PackageInfo packageInfo = (PackageInfo) parent.getItemAtPosition(position);
AppDataActivity appData = (AppDataActivity) getApplicationContext();
appData.setPackageInfo(packageInfo);
Intent appInfo = new Intent(getApplicationContext(), ApkInfoActivity.class);
startActivity(appInfo);
}
Je ne peux pas trouver le problème..Comment puis-je le résoudre?
MODIFIER avec logcat:
10-29 17:14:07.710: E/AndroidRuntime(3535): FATAL EXCEPTION: main
10-29 17:14:07.710: E/AndroidRuntime(3535): java.lang.ClassCastException: android.content.pm.ApplicationInfo cannot be cast to android.content.pm.PackageInfo
10-29 17:14:07.710: E/AndroidRuntime(3535): at com.dd.application.MainActivity.onItemClick(MainActivity.java:369)
10-29 17:14:07.710: E/AndroidRuntime(3535): at android.widget.AdapterView.performItemClick(AdapterView.java:297)
10-29 17:14:07.710: E/AndroidRuntime(3535): at android.widget.AbsListView.performItemClick(AbsListView.java:1149)
10-29 17:14:07.710: E/AndroidRuntime(3535): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2939)
10-29 17:14:07.710: E/AndroidRuntime(3535): at android.widget.AbsListView$2.run(AbsListView.java:3622)
10-29 17:14:07.710: E/AndroidRuntime(3535): at android.os.Handler.handleCallback(Handler.java:730)
10-29 17:14:07.710: E/AndroidRuntime(3535): at android.os.Handler.dispatchMessage(Handler.java:92)
10-29 17:14:07.710: E/AndroidRuntime(3535): at android.os.Looper.loop(Looper.java:137)
10-29 17:14:07.710: E/AndroidRuntime(3535): at android.app.ActivityThread.main(ActivityThread.java:5323)
10-29 17:14:07.710: E/AndroidRuntime(3535): at java.lang.reflect.Method.invokeNative(Native Method)
10-29 17:14:07.710: E/AndroidRuntime(3535): at java.lang.reflect.Method.invoke(Method.java:525)
10-29 17:14:07.710: E/AndroidRuntime(3535): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:743)
10-29 17:14:07.710: E/AndroidRuntime(3535): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559)
10-29 17:14:07.710: E/AndroidRuntime(3535): at dalvik.system.NativeStart.main(Native Method)
source d'informationauteur David_D
Vous devez vous connecter pour publier un commentaire.
L'utiliser pour faire votre travail
Vous devez utiliser l'Intention, Vous pouvez également passer l'cliqué élément de liste des données de votre nouvelle activité.
De sortie:
Vous pouvez trouver l'ensemble du tutoriel ici
Utiliser ceci:
Intent appInfo = new Intent(CurrentActivity.this, ApkInfoActivity.class);
startActivity(appInfo);
Essayez de changer la visibilité de
protected
àpublic
de votre méthode d'en-tête.Modifier
Maintenant que je la regarde, votre méthode d'en-tête est en fait mal. Il doit être le suivant:
Les variables doivent être dans le même ordre qu'ils sont dans l'Interface ils mettent en œuvre.
par exemple si tu veux ouvrir une activité basée sur le texte u cliquez sur dans la liste,c'est à dire si "abcd" est l'option cliqué sur la liste et tu veux ouvrir l'activité avec le même nom "abcd",puis effectuer cette ..
De donner une explication à ma réponse. Je suppose que vous avez configuré votre listview dans l'ordre comme dans votre posté code. Je vais examiner cette partie de votre code:
super.onListItemClick(l, v, position, id);
Je n'ai pas que cela est nécessaire.
Dans le cas de l'exemple que j'ai donné:
Je suis juste mettre un lister pour ma listview laquelle je les ai appelés lv,
ma carte(qui est le titulaire de ma listview éléments) définit trois variables, une Vue, int et long pour l'argument:,
Je me réfère à l'élément sélectionné sur listview par sa position, laquelle, comme d'habitude commence à 0 (mais vous pouvez instancier à partir d'un autre numéro que vous souhaitez e,g, int position=1, commence le décompte à 1).
De là, vous pouvez utilisez ensuite le contrôle de la structure de début d'activité comme par élément cliqué, dans mon cas, j'ai utilisé une boucle depuis que j'ai assumé listview a trois éléments seulement, pour les plus grands éléments listview, vous pouvez utiliser une boucle for.
Veuillez noter comment je commence ma nouvelle activité par la première référence à l'activité en cours comme suit (SwahiliService.c') de ce qui peut en toute sécurité être remplacer par (ce mot clé uniquement), puis suit l'activité, je veux commencer.
J'espère que ce n'est maintenant plus élaborées.
//Ajouter une liste de tableaux et ArrayAdapter:
//Ajouter liste de tableaux de Classes:
//Cliquez sur l'élément de la liste pour ouvrir la Classe de liste de tableaux de Classes:
VOIR L'IMAGE DE LA CLASSE DES NOMS ICI
Ajouter setOnItemclickListener() pour votre Listview.