Как связать классы и меню - PullRequest
0 голосов
/ 19 сентября 2010

Я действительно изо всех сил пытаюсь связать меню вместе. Приложение, которое я хочу создать, представляет собой набор меню, которое приводит к ссылкам на различные сайты, которые я планирую открыть в приложении. Я создал список действий меню с 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();


        }
    }

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

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

1 Ответ

0 голосов
/ 19 сентября 2010

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

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

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

Обновление (для адресации вашего комментария)

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

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

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

public interface Runner {
   public void run();
}

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

public class P implements Runner {

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...