所以,我再次提出一个非常基本的问题。我为自己的无能而道歉,但我想我很难看到这些主题的给定教程。我的问题如下:
我想使用“监听器”模式来处理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();
}
感谢您的帮助!
答案 0 :(得分:4)
我个人更喜欢让我的Activities实现监听器接口并将一个onClick方法添加到Activity本身,例如......
public class MyActivity extends Activity
implements View.OnClickListener {
...
@Override
public void onClick(View v) {
...
}
}
然后我才使用......
myGuiObject.setOnClickListener(this);
...每当我想将该方法设置为任何GUI对象的侦听器时。