Android: шаблон слушателя в onCreate () - PullRequest
0 голосов
/ 22 мая 2011

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

Я хотел бы использовать шаблон «слушателя» для обработки нажатий кнопок в моем графическом интерфейсе. Я считаю, что onClickListener - это то, что мне нужно использовать для обработки этих нажатий кнопок. Однако, я не уверен, должен ли я создавать и обрабатывать события, которые происходят после того, как GUI создан в методе onCreate. Следующий код находится в моем методе onCreate для одного из моих действий:

View.OnClickListener upDownListener = new View.OnClickListener() 
    {       
        @Override
        public void onClick(View v) 
        {


            if(v == (upOneButton))
            {
                Log.d("OptionSelect", "Up One Button Pressed.");
                ops.getOptionList().get(0).incrementProbability(4);
            } . . .

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

Короче говоря, каков хороший и простой способ обработки пользовательских событий в графическом интерфейсе и где это должно происходить?

Спасибо большое.

EDIT: Log.d () действительно вызывается. Кроме того, ops - это объект типа OptionSelect, который является типом класса, в котором выполняется вызов onCreate (). Это станет проблемой? Кроме того, вот метод для incrementProbability ():

public void incrementProbability(int numberOfOptions)
    {
        probability += (numberOfOptions - 1);
        if(probability > 100)
        {
            Log.i("OptionSelect", "Exceeded Maximum by " + (probability - 100));
            probability = 100;
        }
    }

Кроме того, вот соответствующий код, который я должен был включить, который обновляет мой графический интерфейс в конце метода onClick ():

    private void refreshDisplay(TextView a, TextView b, TextView c, TextView d)
{
    a.setText(getOptionList().get(0).getProbability() + "");
    b.setText(getOptionList().get(1).getProbability() + "");
    c.setText(getOptionList().get(2).getProbability() + "");
    d.setText(getOptionList().get(3).getProbability() + "");

    a.invalidate();
    b.invalidate();
    c.invalidate();
    d.invalidate();
}

Спасибо за помощь!

1 Ответ

4 голосов
/ 22 мая 2011

Лично я предпочитаю, чтобы моя деятельность реализовала интерфейсы слушателя и добавила метод onClick к самой деятельности, такой как ...

public class MyActivity extends Activity
    implements View.OnClickListener {

    ...

    @Override
    public void onClick(View v) {

        ...

    }
}

Затем я просто использую ...

myGuiObject.setOnClickListener(this);

... всякий раз, когда я хочу установить этот метод в качестве прослушивателя для любого объекта графического интерфейса.

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