¿Cuál es la mejor manera de agregar un botón?

Soy nuevo en el desarrollo de Android. Tengo una duda. Sé que puedes agregar un botón e inicializarlo como

Button b1=(Button) findViewById(R.id.button1); 

y también puedo dar un nombre de unidad en el archivo XML.

  android:onClick="click_event" 

Mi duda es, ¿cuál es la mejor y más eficiente? como dice que es mejor usar el recurso @string en lugar de un código fijo.

Creo que estás confundido Los ejemplos que das son dos cosas diferentes.

Agregar un botón

Esta línea

 Button b1=(Button) findViewById(R.id.button1); 

no agrega un Button . Declara e inicializa una instancia de Button que hace referencia a un Button en su xml actualmente inflado que tiene una id de button1

Entonces en tu xml tendrías un lugar

  

Puede agregar un Button programáticamente con

 Button bt1 = new Button(this); // give it properties 

Pero generalmente es más fácil de hacer en xml porque aquí tienes que darle parámetros, propiedades, y agregarlo a un layout inflado.

Al hacer clic

En cuanto a onClick() depende de lo que sientas que es lo más fácil y lo mejor en tu situación. Me gusta declararlo en el xml así a menudo, pero puedes hacerlo de varias maneras. Usando este método solo debes asegurarte de que tienes una función como esta que es public y toma solo un parámetro y ese parámetro debe ser una View

  public void clickEvent(View v) { // code here } 

También cambié el nombre para que tu xml fuera como

  

También puede configurar onClick() en su Java con algo como

 Button b1=(Button) findViewById(R.id.button1); b1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // code here } }); 

o

  Button b1=(Button) findViewById(R.id.button1); b1.setOnClickListener(this); @Override public void onClick(View v) { // code here } 

Tenga en cuenta que la última forma en que necesitará agregar implements OnClickListener en su statement de Activity

 public class MyActivity extends Activity implements OnClickListener { 

También puede crear su propio Listener clic cambiándolo a algo así como

 b1.setOnClickListener(myBtnClick); 

luego crea una instancia de ella con algo así como

 public OnClickListener myBtnClick = new OnClickListener() { @Override public void onClick(View v) { // click code here } }; 

Puede usar esto para múltiples Button y activar la id o verificar el parámetro de visualización para saber en qué Button se hizo clic o crear Listeners por separado para Button diferentes.