Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 26
Gestion de la rotation 271
startActivityForResult(i, PICK_REQUEST);
}
});
viewButton=(Button)findViewById(R.id.view);
viewButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
startActivity(new Intent(Intent.ACTION_VIEW, contact));
}
});
restoreMe();
viewButton.setEnabled(contact!=null);
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode==PICK_REQUEST) {
if (resultCode==RESULT_OK) {
contact=data.getData();
viewButton.setEnabled(true);
}
}
}
@Override
public Object onRetainNonConfigurationInstance() {
return(contact);
}
private void restoreMe() {
contact=null;
if (getLastNonConfigurationInstance()!=null) {
contact=(Uri)getLastNonConfigurationInstance();
}
}
}
Ici, nous redéfinissons onRetainNonConfigurationInstance() pour qu’elle renvoie
l’Uri de notre contact au lieu de sa représentation textuelle. De son côté, restoreMe()
appelle getLastNonConfigurationInstance() : si cette méthode renvoie une valeur non
null, il s’agit de notre contact et l’on active le bouton "Voir".
L’avantage de cette approche est que l’on transmet l’Uri au lieu d’une représentation
textuelle. Ici, cela ne représente pas une grosse économie, mais notre état pourrait être
bien plus compliqué et contenir des threads, des sockets ou d’autres choses que nous ne
pourrions pas empaqueter dans un Bundle.
Livre Android.book Page 271 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 26
Gestion de la rotation 271
startActivityForResult(i, PICK_REQUEST);
}
});
viewButton=(Button)findViewById(R.id.view);
viewButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
startActivity(new Intent(Intent.ACTION_VIEW, contact));
}
});
restoreMe();
viewButton.setEnabled(contact!=null);
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode==PICK_REQUEST) {
if (resultCode==RESULT_OK) {
contact=data.getData();
viewButton.setEnabled(true);
}
}
}
@Override
public Object onRetainNonConfigurationInstance() {
return(contact);
}
private void restoreMe() {
contact=null;
if (getLastNonConfigurationInstance()!=null) {
contact=(Uri)getLastNonConfigurationInstance();
}
}
}
Ici, nous redéfinissons onRetainNonConfigurationInstance() pour qu’elle renvoie
l’Uri de notre contact au lieu de sa représentation textuelle. De son côté, restoreMe()
appelle getLastNonConfigurationInstance() : si cette méthode renvoie une valeur non
null, il s’agit de notre contact et l’on active le bouton "Voir".
L’avantage de cette approche est que l’on transmet l’Uri au lieu d’une représentation
textuelle. Ici, cela ne représente pas une grosse économie, mais notre état pourrait être
bien plus compliqué et contenir des threads, des sockets ou d’autres choses que nous ne
pourrions pas empaqueter dans un Bundle.
Livre Android.book Page 271 Dimanche, 8. novembre 2009 12:23 12
