Comment puis-je commencer un nouveau android activité à l'aide d'une chaîne de caractères?
Je vais avoir un problème avec une application android qui je travaille.
Ma demande a plusieurs sections, et l'écran suivant qui charge est basée sur une chaîne de caractères. Donc, écran 1 de la section 1 serait, S1S1.
Ma question est, comment puis-je commencer une activité fondée sur une chaîne de caractères. J'ai S1S1 enregistré dans une chaîne de caractères, permet de l'appeler nextactivity. Plutôt que d'avoir à saisir S1S1.class j'ai besoin qu'elle vienne de la chaîne. J'ai triend tout ce que je peux chose, et google n'a pas vraiment aidé.
Certaines choses que j'ai essayé sont
Intent myIntent = new Intent(nextactivity);
Intent myIntent = new Intent(v.getContext(), getClass().getName().valueOf(nextactivity));
Intent myIntent = new Intent(v.getContext(), Class.forName(nextactivity));
et essayé de courir avec
startActivityForResult(myIntent, 0);
mais rien ne semble fonctionner. Des idées?
Vous devez vous connecter pour publier un commentaire.
Voici un code qui vous permet de démarrer l'activité en utilisant le nom de l'activité
MODIFIER
Ici le nom de la classe sera le nom complet de la classe avec le nom de package.
Par exemple, si votre nom de paquet sera
x.y.z
et si vous avez le nom de l'Activité appeléeA
alors le nom complet de l'ActivitéA
serax.y.z.A
.Une meilleure façon de le faire (et qu'il est utilisé dans le système pour lancer le Navigateur.apk le long de avec d'autres applications qui ne sont pas livré avec PSBA):
Alternativement, si vous voulez vous assurer que vous pouvez commencer à la
Activity
à partir de la ligne de commande, vous pouvez faire quelque chose comme ce à partir de votre shell:intent.setClassName(context, context.getPackageName() + ".MyActivity");
ActivityNotFoundException
sera levée. L'exemple de @Richard peut être simplifié encore plus loin - il n'est pas nécessaire de faire précéder le nom du package:intent.setClassName(context, ".MyActivity");
Je ne suis pas au courant de la solution, mais j'ai une solution de rechange.. la voie semblable div cacher et de montrer dans les pages web.
si votre s1s1 est chargé faible teneur en avoir dans un linearlayout et de garder leur visibilité allé sur le chargement de formulaire s1. lorsque vous cliquez sur s1 pour atteindre s1s1 cacher s1 et définir les paramètres de visibilité "visible".
En faisant cela, vous pouvez éviter de créer une activité distincte et cette voie est également facile à naviguer.
Utiliser Les Énumérations!
Puis, quelque part dans votre code: