Вызов Intent динамически на нескольких кнопках - PullRequest
1 голос
/ 17 апреля 2011

В настоящее время у меня есть приложение, похожее на книгу: несколько страниц и две кнопки внизу, ссылающиеся на следующую и предыдущую страницы.

То, что я сейчас делаю, - это что-то подобное на каждойиз моего макета XML я добавляю две кнопки со свойством onClick.

Например, на странице 5 у меня есть предыдущая кнопка:

android:onClick="Page4"

и следующая кнопка

android:onClick="Page6"

Я также написал CustomActivity со следующими свойствами:

public void Page4(View v) {
    startActivity(new Intent(this, Page04.class));
    finish();
}
public void Page6(View v) {
    startActivity(new Intent(this, Page06.class));
    finish();
} 

Это прекрасно работает, и я написал целое приложение, подобное этому, но я действительно хотел бы сделать что-то более умное.

Как вы можете себе представить, когда у меня есть что-то вроде 100 страниц, мой код довольно ужасный!

Я не знаю, что-то вроде «PreviousPage» или «NextPage»

public void PreviousPage(View v) {
    Intent i= "Generate dynamically an intent for previous page"
    startActivity(i);
    finish();
} 

ЧТОЯ думал, что также предоставляю параметр в моем xml и делаю что-то вроде:

public void GotoPage(View v, int page) {
    startActivity(new Intent(this, Page"+page+".class));
    finish();
} 

Я надеюсь, вы понимаете, что я имею в виду и что я ищу.

1 Ответ

3 голосов
/ 17 апреля 2011

Создайте java.util.List или java.Util.Map, содержащий ваши действия.

List activities = new ArrayList();
activities.add(Activity1.class);
activities.add(Activity2.class);
activities.add(Activity3.class);

Начните свою деятельность, позвонив по номеру

startActivity(new Intent(this,activities.get(i));

Если вам нужно иметь возможностьПоиск по ключу, вы можете сделать то же самое с картой,

Map activities = new HashMap();
activities.add("activity1",Activity1.class);
activities.add("activity2",Activity2.class);
activities.add("activity3",Activity3.class);

Начните свою деятельность, позвонив по номеру

startActivity(new Intent(this,activities.get("activity1"));

Сохраняя ее в списке / карте, это должно быть довольно легкореализовать первую, предыдущую, следующую, последнюю функциональность.

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