La mejor práctica para definir eventos de botón en android

Tengo unLayout definido en XML que consta de variasButton s.

Actualmente estoy haciendo esto en laOnCreate método para definir los controladores de eventos contra los botones:

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button newPicButton = (Button)findViewById(R.id.new_button);
    newPicButton.setOnClickListener(btnListener);
    ..... similarly for other buttons too
    .....
}

Inside de laButton 'sonClick evento, lanzo una cámaraIntent para obtener una imagen y dentro de laonActivityResult callback Estoy configurando nuevamente los controladores de eventos junto con la configuración deView Me gusta esto

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    setContentView(R.layout.main);
    Button newPicButton = (Button)findViewById(R.id.new_button);
    newPicButton.setOnClickListener(btnListener);
    ...similarly for other buttons too
}

Soy nuevo en Android y este enfoque de redefinir un evento cada vez me parece bastante sucio. Me gustaría saber cuál es la mejor práctica en términos de definir controladores de eventos de botón en escenarios como este.

Edit: pegar mi clase completa

public class CameraAppActivity extends Activity 
{
    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button newPicButton = (Button)findViewById(R.id.new_button);
        newPicButton.setOnClickListener(btnListener);
    }

    //---create an anonymous class to act as a button click listener---
    private OnClickListener btnListener = new OnClickListener()
    {

        public void onClick(View v)
        {   
             //Intent newPicIntent = new Intent(v.getContext(), NewPictureActivity.class);
             //startActivityForResult(newPicIntent, 0);
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, 999);
        } 

    };  

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {  

        setContentView(R.layout.main);
        Button newPicButton = (Button)findViewById(R.id.new_button);
        newPicButton.setOnClickListener(btnListener);

       //if I comment last two lines nothing happens when I click on button

    }  

La pregunta principal es

setContentView(R.layout.main);
Button newPicButton = (Button)findViewById(R.id.new_button);
newPicButton.setOnClickListener(btnListener);

Volver a registrar eventos dentro deonActivityResult .. ¿es correcto el enfoque? ¿O estoy haciendo algo mal? Porque si no vuelvo a registrar el evento, no sucede nada cuando hago clic en el botón.

Respuestas a la pregunta(10)

Su respuesta a la pregunta