как использовать методы onclick на Android - PullRequest
2 голосов
/ 22 марта 2012

Итак, у меня есть эти пять кнопок, которые я хочу всегда присутствовать во всех действиях, вроде кнопок быстрого доступа к другим действиям.Поэтому я создал для этого отдельный макет xml и просто включил их в другие макеты действий.Я также создал класс с соответствующими методами, которые будут обрабатывать нажатия кнопок.

Теперь моя проблема в том, что я не знаю, как использовать / объявить этот класс в своей деятельности.Когда я пытаюсь запустить свое приложение, logcat выдает ошибку, что не может найти метод, обрабатывающий щелчок.

Как мне это сделать?

Вот мой класс обработчика кнопок:1007 *

package com.meralco.pms;

import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Toast;

public class ButtonsHandler extends Activity{

protected void startSin() {
    Intent launch = new Intent(this, SinActivity.class);
    startActivity(launch);
}
protected void startCity() {
    Intent launch = new Intent(this, CityActivity.class);
    startActivity(launch);
}

protected void startHelp() {
    Intent launch = new Intent(this, HelpActivity.class);
    startActivity(launch);

}
protected void startAll() {
    Intent launch = new Intent(this, AllActivity.class);
    startActivity(launch);

}
protected void startDate() {
    Intent launch = new Intent(this, DateActivity.class);
    startActivity(launch);

}
public void buttonClick(View v) {
    switch(v.getId())
      {
      case R.id.button_sin:
          Toast.makeText(v.getContext(), "SIN" , Toast.LENGTH_SHORT).show();
          startSin();
          break;
      case R.id.button_city:
          startCity();
          Toast.makeText(v.getContext(), "CITY" , Toast.LENGTH_SHORT).show();
          break;
      case R.id.button_date:
          startDate();
          Toast.makeText(v.getContext(), "DATE" , Toast.LENGTH_SHORT).show();
          break;
      case R.id.button_all:
          startAll();
          Toast.makeText(v.getContext(), "ALL" , Toast.LENGTH_SHORT).show();
          break;
      case R.id.button_help:
          startHelp();
          Toast.makeText(v.getContext(), "HELP" , Toast.LENGTH_SHORT).show();
          break;
      }
}
}

Я думаю, что мне не хватает конструкторов.Я иду в правильном направлении или я совершенно неправильно понял?ТИА!

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Я бы изменил ваш ButtonsHandler для расширения Fragment вместо Activity. Затем вы можете включить этот фрагмент во все остальные ваши действия. Им нужно будет расширить FragmentActivity, чтобы разместить фрагмент ButtonsHandler, а файлы макетов будут ссылаться на com.meralco.pms.ButtonsHandler как фрагмент.

Для поддержки фрагментов в версиях Android до 3.0 вам потребуется библиотека совместимости Android: http://developer.android.com/sdk/compatibility-library.html

Вы также захотите прочитать о фрагментах: http://developer.android.com/guide/topics/fundamentals/fragments.html

Это рекомендуемый способ для приложений Android повторно использовать компоненты пользовательского интерфейса, как в этом случае:

Фрагмент представляет поведение или часть пользовательского интерфейса в Деятельности. Вы можете объединить несколько фрагментов в одном действии, чтобы создать многопанельный пользовательский интерфейс и повторно использовать фрагмент в нескольких действиях. Вы можете думать о фрагменте как о модульном разделе активности, который имеет собственный жизненный цикл, получает свои собственные входные события и который вы можете добавлять или удалять во время выполнения действия (что-то вроде «вспомогательного действия», которое вы можете повторное использование в различных видах деятельности).

Что касается ваших кнопок, вы захотите подключить слушателей так:

Button helpButton = (Button) findViewById(R.id.button_help);
helpButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        startHelp();
        Toast.makeText(v.getContext(), "HELP" , Toast.LENGTH_SHORT).show();                   
    }
});
0 голосов
/ 22 марта 2012

В XML каждой кнопки убедитесь, что у вас есть свойство android: onClick = "buttonClick"

0 голосов
/ 22 марта 2012

Вам нужно будет добавить OnClickListeners для регистрации при нажатии кнопки.

Вы можете узнать, как их использовать в Android Dev Guide , если прокрутить немного вниз.

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