当您按下应用程序的任何按钮时,我会尝试播放声音。
将监听器添加到应用程序中的所有按钮的次要侵入方式是什么?
我可以添加覆盖(和扩展)Android的通用侦听器吗?
感谢。
答案 0 :(得分:3)
或者只是
class YourClass implements OnClickListener{
buttonOne.setOnclickListener(this);
buttonTwo.setOnclickListener(this);
buttonThree.setOnclickListener(this);
public void onClick(View v){
//do your stuff;
}
}
或者,如果您愿意,可以制作自定义按钮:
Class Yourbutton extends Button implements Button.OnClickListener{
public Yourbutton(Context c) {
super(c);
}
public Yourbutton(Context c,AttributeSet s){
super(c,s);
}
public void onClick(View v){
//do your stuff;
}
}
所以现在你可以使用Yorkbutton作为执行通用作业的通用按钮。
答案 1 :(得分:3)
您可以为所有按钮设置一个侦听器,也可以使用标记进行标识。
View.OnClickListener myClickLIstener= new View.OnClickListener() {
public void onClick(View v) {
String tag = (String) v.getTag();
Log.e("","tag : "+tag)
// your stuff
}
};
设置听众......
btn1.setOnClickListener(myClickLIstener);
btn1.setTag("btn1");
btn2.setOnClickListener(myClickLIstener);
btn2.setTag("btn2");
编辑:
你在寻找这样的......
class superTop implements View.OnClickListener {
@Override
public void onClick(View v) {
Log.e("", "onClick superTop");
}
}
class NewClick extends superTop implements View.OnClickListener {
@Override
public void onClick(View v) {
Log.e("", "onClick NewClick");
super.onClick(v);
}
}
findViewById(R.id.button1).setOnClickListener(new NewClick());
你可以同时打电话给听众......
答案 2 :(得分:2)
您可以首先让您的类实现OnClickListener
button1.setOnClickListener(this);
button2.setOnClickListener(this);
在onClick方法中执行以下操作:
public void onClick(View view) {
switch(view.getId()){
//here you need the id of the button i.e. its id in the xml file
case R.id.button1:
// do whatever you want button1 to do
break;
case R.id.button2:
// do whatever you want button2 to do
break;
}
}
答案 3 :(得分:1)
您可以使用android:onClick
属性。像这样设置相同的onClick方法:
<Button
[...]
android:onClick="handleButton"/>
<Button
[...]
android:onClick="handleButton"/>
在你的java文件中:
public void handleButton(View v){
// do some stuff
}
答案 4 :(得分:1)
创建一个单击此类监听器,如果希望它们执行相同操作,则从所有按钮中调用它
View.OnClickListener yourClickListener = new View.OnClickListener() {
public void onClick(View v) {
//play the music
}
};
然后调用该侦听器
button1.setOnClickListener(yourClickListener);
button2.setOnClickListener(yourClickListener);
button3.setOnClickListener(yourClickListener);
答案 5 :(得分:0)
调用您想要工作的按钮的相同方法,如
<LinearLayout ...>
<Button android:text="1" onClick="onButtonClicked" clickable="true" />
<Button android:text="2" onClick="onButtonClicked" clickable="true" />
<Button android:text="3" onClick="onButtonClicked" clickable="true" />
<Button android:text="4" onClick="onButtonClicked" clickable="true" />
</LinearLayout>
以上四个按钮有不同的文本,但onClick它们具有相同的方法,现在不需要使用findViewById在java类中获取它们。
在显示布局的活动中,只需添加方法
public void onButtonClicked(View v){
// do whatever needs to be done. For example:
Toast.makeText(getApplicationContext(), ((Button) v).getText() + " clicked", Toast.LENGTH_SHORT).show();
}
第二种方法
您无需为所有人重复相同的代码。您可以尝试使用通用侦听器,例如:
private OnClickListener genericClickListener= new OnClickListener() {
public void Click(View v) {
// do something
}
};
然后,您只需注册所有三个按钮即可使用此genericClickListener。也就是说,在onCreate()
内,
Button firstbtn = (Button) findViewById(R.id.firstbtn);
Button secondbtn = (Button) findViewById(R.id.secondbtn);
Button thirdbtn = (Button) findViewById(R.id.thirdbtn);
firstbtn.setOnClickListener(genericClickListener);
secondbtn.setOnClickListener(genericClickListener);
thirdbtn.setOnClickListener(genericClickListener);
第三种方法
创建单个函数/方法,并将所有按钮调用的 onClick 设置为Method/Function
。