2010-09-19 4 views
0

Я действительно борется с соединением меню вместе. В приложении я хочу создать коллекцию меню, которая приведет к связям с URL-адресами на различные сайты, которые я планирую открыть в приложении. Я создал меню активности списка с 8 вариантами, и у меня есть восемь классов с дополнительными параметрами. Моя проблема заключается в том, как объединить меню.Как связать классы и меню

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(); 


     } 
    } 

На данный момент все это делает, это печать выбор, используя метод тост, но как я могу получить его, чтобы перейти к классу p.java, когда я выбрал его. В основном я бы взял переменную имен и сказал, если имена = p goto p.java, у меня есть googled, и хотя я получаю часть ответа, я не могу понять, как его реализовать.

Большое спасибо заранее.

ответ

0

Я подозреваю, что вместо класса, то, что вы хотите, является экземпляром рассматриваемого класса. Один из способов сделать это было бы с картой:

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

(где Runner представляет собой интерфейс, что все классы реализуют). Затем, внутри onListItemClick() метода, где у вас есть тост:

runners.get(keyword).run(); 

(где бег() является методом, который вы хотите запустить).

Update (обратиться комментарий)

Трудно точно сказать, где поместить какие биты кода, но, основываясь на ваш вопрос:

Вы могли бы сделать бегунов на поле в вашей деятельности, и инициализировать его в вашей же функции onCreate. Так что эта часть обрабатывается.

Интерфейс Runner может быть столь же просто, как это (в отдельном файле):

public interface Runner { 
    public void run(); 
} 

и каждый из ваших классов (P, Ch, Le, и т.д.) будет иметь implements бит в конструкторе :

public class P implements Runner { 

И было бы включить метод Run() (который можно просто назвать любой существующий метод, который вы хотите назвать для URL): общественности недействительным запуска() {// делать все, что вы хотите сделать здесь }

+0

Привет, Carl Спасибо за ваш ответ, Извините, я ноб, и, возможно, я бегу, прежде чем я смогу ходить, но где я должен поместить код, удалить другие классы и другие меню в одном и том же класс или где я могу найти пример этого, чтобы я мог видеть, как это работает – JonniBravo

Смежные вопросы