Prática recomendada para definir eventos de botão no android

Eu tenho um Layout definido em XML que consiste em vários Botão s.

Atualmente, estou fazendo isso no método OnCreate para definir os manipuladores de eventos contra os botões:

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
    .....
}

Dentro do Botão evento onClick , lanço uma câmera Intent para obter uma imagem e dentro do callback onActivityResult estou novamente configurando os manipuladores de eventos junto com a configuração de Visualização como este:

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
}

Eu sou novo no Android e esta abordagem de redefinir um evento sempre parece bastante suja. Gostaria de saber qual é a prática recomendada em termos de definição de manipuladores de eventos de botão em cenários como este.

Editar: colando minha classe 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

    }  

A questão principal é

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

Registrando novamente eventos dentro de onActivityResult .. é a abordagem certa? Ou estou fazendo algo errado? Porque se eu não registrar novamente o evento, nada acontecerá quando eu clicar no botão.

66
задан Grimeh 2 December 2013 в 07:33
поделиться