Android:onCreate()中的侦听器模式

时间:2011-05-22 18:52:36

标签: android user-interface listener

所以,我再次提出一个非常基本的问题。我为自己的无能而道歉,但我想我很难看到这些主题的给定教程。我的问题如下:

我想使用“监听器”模式来处理GUI上的按钮按下。我相信onClickListener是我需要用来处理这些按钮的方法。但是,我不确定是否应该创建和处理在onCreate方法中创建GUI之后发生的事件。以下代码位于我的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);
            } . . .

此方法被调用更新一些具有不同数字的GUI文本。它被调用,但GUI没有响应。我想这与我在onCreate方法中使用它的尝试有关。

简而言之,在GUI中处理用户事件的简单方法是什么?应该在哪里发生?

非常感谢你。

编辑: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()方法结束时更新我的​​GUI:

    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 个答案:

答案 0 :(得分:4)

我个人更喜欢让我的Activities实现监听器接口并将一个onClick方法添加到Activity本身,例如......

public class MyActivity extends Activity
    implements View.OnClickListener {

    ...

    @Override
    public void onClick(View v) {

        ...

    }
}

然后我才使用......

myGuiObject.setOnClickListener(this);

...每当我想将该方法设置为任何GUI对象的侦听器时。