J'ai un Layout
défini en XML, qui se compose de plusieurs Button
s.
Actuellement, je fais cela dans le OnCreate
pour définir les gestionnaires d'événements pour les boutons :
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
.....
}
L'intérieur de la Button
's onClick
je lance une caméra Intent
pour obtenir une photo et à l'intérieur de la onActivityResult
je configure à nouveau les gestionnaires d'événements ainsi que le paramètre View
comme ça :
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
}
Je suis nouveau sur Android et cette approche consistant à redéfinir un événement à chaque fois me semble assez sale. J'aimerais savoir quelle est la meilleure pratique en termes de définition de gestionnaires d'événements de boutons dans des scénarios comme celui-ci.
Edit : collage de ma classe complète
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 question principale est
setContentView(R.layout.main);
Button newPicButton = (Button)findViewById(R.id.new_button);
newPicButton.setOnClickListener(btnListener);
Réenregistrement des événements à l'intérieur onActivityResult
est-ce la bonne approche ? Ou est-ce que je fais quelque chose de mal ? Parce que si je ne réenregistre pas l'événement, rien ne se passe lorsque je clique sur le bouton.
2 votes
Vous ne devriez pas avoir à les configurer à nouveau en
onActivityResult()
s'ils sont déjà configurés dansonCreate()
0 votes
:S si je ne le fais pas en revenant à la vue principale après l'intention, rien ne se produit si je clique sur le bouton