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.