2010-09-19 5 views
0

Je suis vraiment aux prises avec des menus de liaison ensemble. L'application que je veux créer une collection de menus qui mène à des liens URL vers différents sites que je prévois d'ouvrir dans l'application. J'ai créé un menu d'activité de liste avec 8 options et j'ai huit classes avec d'autres options. Mon problème est de savoir comment lier les menus ensemble.Comment lier des classes et des menus

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    // Create an array of Strings, that will be put to our ListActivity 
    String[] names = new String[] { "P", "Ch", "Le", "Le", "B", "Sk", "Awa", "Tra"}; 
    // Create an ArrayAdapter, that will actually make the Strings above 
    // appear in the ListView 
    this.setListAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_checked, names)); 
} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    // Get the item that was clicked 
    Object o = this.getListAdapter().getItem(position); 
    String keyword = o.toString(); 
    Toast.makeText(this, "You selected: " + keyword, Toast.LENGTH_LONG) 
      .show(); 


     } 
    } 

Au moment tout cela ne fait imprimer la sélection selon la méthode de pain grillé, mais comment puis-je pour passer à la classe p.java quand je l'avoir sélectionné. En base je prendrais les noms variables et dirais si les noms = p goto p.java, j'ai googlé et bien que j'obtienne une partie de la réponse je ne peux pas comprendre comment l'implémenter.

Merci beaucoup d'avance.

Répondre

0

Je soupçonne que plutôt qu'une classe, ce que vous voulez est une instance de la classe en question. Une façon de le faire serait une carte:

Map<String, Runner> runners = new HashMap<String, Runner>(); 
runners.put("P", new P()); 
runners.put("Ch", new Ch()); 
// etc. 

(où Runner est une interface que toutes vos classes implémentent). Puis, à l'intérieur de votre méthode onListItemClick(), où vous avez le pain grillé:

runners.get(keyword).run(); 

(où run() est la méthode que vous voulez lancer).

Mise à jour (pour répondre à vos commentaires)

Il est difficile de dire exactement où placer les bits de code, mais en fonction de votre question:

Vous pourriez faire des coureurs un terrain dans votre activité, et l'initialiser dans votre même fonction onCreate. Donc, cette partie est gérée.

L'interface Runner pourrait être aussi simple que cela (dans son propre fichier):

public interface Runner { 
    public void run(); 
} 

et chacune de vos classes (P, Ch, Le, etc.) aurait un peu implements dans le constructeur :

public class P implements Runner { 

et devrait inclure une course() méthode (qui pourrait simplement appeler toute méthode existante que vous voulez appelé à l'URL): public void run() {// faire tout ce que vous voulez faire ici }

+0

Salut Carl, Merci pour votre réponse, Désolé je suis un noob et peut-être que je cours avant de pouvoir marcher mais où devrais-je placer le code, dois-je supprimer les autres classes et avoir les autres menus dans le même classe ou où puis-je trouver un exemple de ce que je puisse voir comment cela fonctionne – JonniBravo

Questions connexes