我的意思是这样的
button = (Button)findViewById(R.id.button1);
button = (Button)findViewById(R.id.button2);
button = (Button)findViewById(R.id.button3);
button = (Button)findViewById(R.id.button4);
button = (Button)findViewById(R.id.button5);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
//Do same logic
}
});
}
可以这样定义吗?或者它会导致力量关闭?
还有一个问题,可以使用从当前xml到另一个xml的复制ID吗?我的意思是xml是不同的,但Widget和ID是相同的,并在不同的类中定义ID。因为复制比使用新Id更简单,所以可以吗?
示例:
所以在activityone.xml中
我有这个
所以我将小部件复制到activitytwo.xml,因此它们具有相同的小部件和ID
如果我这样做可以吗?
答案 0 :(得分:1)
这只会为button5设置监听器。每次分配按钮都会丢失之前的分配,因此当您设置监听器时,变量按钮不会知道它曾经指向button1到4。
所以不,它不起作用。
我对你的第二个问题发表评论。
答案 1 :(得分:0)
为此你应该有单个监听器,但有五个不同的按钮(Objects
)。目前,您将逐个分配每个按钮到相同的button
引用。这样,您的button
将R.id.button5
,而在更多代码中,您将无法参考之前的按钮butons1-4
。因此,当您向button
添加侦听器时,您实际上只将侦听器添加到按钮5,而任何其他按钮都不会有该侦听器。
首先,您需要五个不同的buttons
,您应该创建实现侦听器的类,并将该侦听器的实例添加到setOnClicklistener
方法中,或者以更好的方式指定{{1}在您的android:onClick="onClick"
中添加xml
方法。
例如:
onClick
<强> OR 强>
//.. on create
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
Button button4 = (Button)findViewById(R.id.button4);
Button button5 = (Button)findViewById(R.id.button5);
ListenerClass listener = new ListenerClass();
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
//..and so on
//Create class
public class ListenerClass implements View.OnClickListener {
//...
@Override
public void onClick(View view) {
//You can determine which button is clicked by view.getId()
//Add logic here
}
}
可以使用从当前xml到另一个xml的复制ID吗?
是的它很好,但你应该避免使用它,因为它可能会造成长期混乱。在与团队合作的广泛项目中,可能会在理解这一问题时产生问题。除此之外,您可以拥有相同的ID,因为当您调用public class YourActivity implements View.OnClickListener {
//...on create
button1.setOnClickListener(this);
button2.setOnClickListener(this);
//..and so on
//...
@Override
public void onClick(View view) {
//You can determine which button is clicked by view.getId()
//Add logic here
}
}
时,它将引用当前视图,并且不会受到其他视图的ID的影响。