OnClick functionality of buttons can be written in three different ways
Activity implementing OnClickListener
In the first line of your activity, add implements OnClickListener at the end.
public class MyActivity extends Activity implements OnClickListener
You will be prompted to import View.OnClickListener.
When you hover over the classname you will be prompted to implement onclick method
Select Add unimplemented methods
Editor adds onClick method in the activity. Add the action inside the method.
Now you should link your button to this listener by saying
btn.setOnClickListener(this);
If your class has multiple buttons, they can all use same listener. Then when any of these buttons are pressed, the onClick method is activated. Hence to specify action for your particular button, get the id and check against id of the button.
Writing anonymous inner class
In the code add "mybtn.setOnClickListener(new OnClickListener(){---});
Again editor puts the template of the anonymous class for you :)
Specifying onClick Method in xml file
In the layout file, for the button, add android:onClick value.
Now define the onclick method in the format public void methodName(View v)
- By making activity implement OnClickListener and writing onClick method in the activity
- By writing an anonymous inner class
- Using android:onClick in xml file
Activity implementing OnClickListener
In the first line of your activity, add implements OnClickListener at the end.
public class MyActivity extends Activity implements OnClickListener
You will be prompted to import View.OnClickListener.
When you hover over the classname you will be prompted to implement onclick method
Select Add unimplemented methods
Editor adds onClick method in the activity. Add the action inside the method.
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Add your code here
}
Now you should link your button to this listener by saying
btn.setOnClickListener(this);
If your class has multiple buttons, they can all use same listener. Then when any of these buttons are pressed, the onClick method is activated. Hence to specify action for your particular button, get the id and check against id of the button.
public void onCreate(Bundle b){
----
---
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
switch(id){
case R.id.button1: //your code goes here
}
}
Writing anonymous inner class
In the code add "mybtn.setOnClickListener(new OnClickListener(){---});
public void onCreate(Bundle b)
{
------
-------
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v){
//add your code here
}
});
Again editor puts the template of the anonymous class for you :)
Specifying onClick Method in xml file
In the layout file, for the button, add android:onClick value.
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="29dp"
android:onClick="changeText"
android:text="Button" />
Now define the onclick method in the format public void methodName(View v)
public void changeText(View v){
Button b = (Button)v;
String str = b.getText().toString() ;
str = str+"clicked ";
b.setText(str);
}