我正在自学Android,现在我正在学习如何使用按钮。我创建了一个简单的up计数器,其工作原理如下: 我在不同的文本字段中添加字符串(例如,1 2 3)。然后我想成对地比较那些(1与2,1与3,2与3)。第一个字符串元素写在第一个按钮上,第二个字符串写在第二个按钮上,按下任何一个按钮后,按钮上的标记必须改变(如果有1和2那么它应该改为1和3或2和3等)和字符串元素获得更高的排名。一切似乎都运作良好,但我认为添加按钮我犯了很大的错误。谁能帮我? :)我可以添加像我在代码中所做的按钮监听器吗? :)谢谢!
public void counter()
{
int i = 0;
int a = i + 1;
for ( i = 0; i < candidates.size() - 1; i++ )
{
Log.d(TAG, "Setting button one tag: " + i );
button_one.setTag(i);
button_one.setText(candidates.get(i).name);
for (a = i + 1; a < candidates.size(); a++)
{
Log.d(TAG, "Setting button two tag: " + a );
button_two.setTag(a);
button_two.setText(candidates.get(a).name);
button_one.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view) {
/* Read the clicked tag */
int tag = (Integer) view.getTag();
/* Make higher rank */
candidates.get(tag).addRank();
}
});
button_two.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view) {
/* Read the clicked tag */
int tag = (Integer) view.getTag();
/* Make higher rank */
candidates.get(tag).addRank();
}
});
}
}
答案 0 :(得分:0)
一般情况下,不需要在循环中添加点击侦听器,除非您以动态创建这些按钮。
在循环中为同一个按钮设置单击侦听器,每次循环循环时,除了覆盖以前的设置外什么都不做,所以我没有看到这样做的任何意义。
答案 1 :(得分:0)
你应该创建一个OnClickListener mListener = new View.OnClickListener etc... etc...
并且可能在您定义OnCreate()
之后的button_one = (Button)findViewById(R.id.button_one);
button_one.setOnClickListener(mListener);
期间{{1}}
通过这种方式,您只有一个侦听器可以提供您可能拥有的任意数量的按钮,并且不需要再次设置相同的侦听器。