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.