**Adding a Button**
Button b1=(Button) findViewById(R.id.button1);
doesn't add a Button. It declares and initializes an instance of Button which refers to a Button in your currently inflated xml which has an id of button1
So in your xml you would have somewhere
<Button
android:id="@+id/button1"
<!-- other properties -->
/>
You can add a **Button** programmatically with
Button bt1 = new Button(this);
// give it properties
But it is generally easier to do in xml because here you have to programmatically give it parameters, properties, and add it to an inflated layout
**OnClick**
As far as the onClick() it depends on what you feel is the easiest and best in your situation. I like to declare it in the xml like that often but you can do it several ways. Using this method you just have to be sure that you have a function like this that is public and takes only one parameter and that parameter must be a View
public void clickEvent(View v)
{
// code here
}
I also changed the name so your xml would be like
<Button
android:id="@+id/button1"
<!-- other properties -->
android:onClick="clickEvent"/>
You also can set onClick() in your Java with something like
Button b1=(Button) findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// code here
}
});
or
Button b1=(Button) findViewById(R.id.button1);
b1.setOnClickListener(this);
@Override
public void onClick(View v)
{
// code here
}
Note that the last way you will need to add implements OnClickListener in your Activity declaration
public class MyActivity extends Activity implements OnClickListener
{
You can also create your own click Listener by changing it to something like
b1.setOnClickListener(myBtnClick);
then create an instance of it with something like
public OnClickListener myBtnClick = new OnClickListener()
{
@Override
public void onClick(View v)
{
// click code here
}
};
You can use this for multiple Buttons and switch on the id or check the View param to know which Button was clicked or create separate Listeners for different Buttons.
I think you are confused. The examples you give are two different things.
**Adding a Button**
This line
Button b1=(Button) findViewById(R.id.button1);
doesn't add a `Button`. It declares and initializes an instance of `Button` which refers to a `Button` in your currently inflated xml which has an `id` of `button1`
So in your xml you would have somewhere
<Button
android:id="@+id/button1"
<!-- other properties -->
/>
You can add a `Button` programmatically with
Button bt1 = new Button(this);
// give it properties
But it is generally easier to do in xml because here you have to programmatically give it parameters, properties, and add it to an inflated `layout`
**OnClick**
As far as the `onClick()` it depends on what you feel is the easiest and best in your situation. I like to declare it in the xml like that often but you can do it several ways. Using this method you just have to be sure that you have a function like this that is `public` and takes only one parameter and that parameter must be a `View`
public void clickEvent(View v)
{
// code here
}
I also changed the name so your xml would be like
<Button
android:id="@+id/button1"
<!-- other properties -->
android:onClick="clickEvent"/>
You also can set `onClick()` in your Java with something like
Button b1=(Button) findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// code here
}
});
or
Button b1=(Button) findViewById(R.id.button1);
b1.setOnClickListener(this);
@Override
public void onClick(View v)
{
// code here
}
Note that the last way you will need to add `implements OnClickListener` in your `Activity` declaration
public class MyActivity extends Activity implements OnClickListener
{
You can also create your own click `Listener` by changing it to something like
b1.setOnClickListener(myBtnClick);
then create an instance of it with something like
public OnClickListener myBtnClick = new OnClickListener()
{
@Override
public void onClick(View v)
{
// click code here
}
};
You can use this for multiple `Button`s and switch on the `id` or check the `View` param to know which `Button` was clicked or create separate `Listeners` for different `Button`s.