I m having trouble with maintaining the dialog on orientation change. I
m en utilisant onSaveInstanceState, onRestoreInstanceState. Mais j'ai un null dans onRestore. Je veux que la boîte de dialogue affiche les mêmes valeurs quand je change l'orientation de l'écran. Merci! Voici la boîte de dialogue:Boîte de dialogue Android et maintien de l'état sur le changement d'orientation de l'écran
private void ratedialog() {
dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog);
dialog.setTitle("Rate it!");
dialog.setCancelable(true);
dialog.show();
seekbar = (SeekBar) dialog.findViewById(R.id.rate_seekbar);
button_done = (Button) dialog.findViewById(R.id.button_done);
seekbar_result = (TextView) dialog.findViewById(R.id.seekbar_result);
checkBox_seen = (CheckBox) dialog.findViewById(R.id.checkBox_seen);
button_done.setOnClickListener(EditActivity.this);
seekbar.setOnSeekBarChangeListener(EditActivity.this);
checkBox_seen.setOnCheckedChangeListener(EditActivity.this);
Intent callingIntent = getIntent();
if (callingIntent.getAction().equals(Intent.ACTION_OPEN_DOCUMENT)) {
Movie movie = dbHandler.query(id);
rate = movie.getRate();
seen = movie.isSeen();
seekbar.setProgress(rate);
image_seen.setImageResource(R.drawable.seen);
image_seen.setVisibility(View.INVISIBLE);
checkBox_seen.setChecked(seen);
}else if (callingIntent.getAction().equals(Intent.ACTION_EDIT)){
seekbar.setProgress(rate);
image_seen.setImageResource(R.drawable.seen);
image_seen.setVisibility(View.INVISIBLE);
checkBox_seen.setChecked(seen);
}else if (callingIntent.getAction().equals(Intent.ACTION_INSERT)){
seekbar.setProgress(rate);
image_seen.setImageResource(R.drawable.seen);
image_seen.setVisibility(View.INVISIBLE);
checkBox_seen.setChecked(seen);
}
}
onSave:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (rate != 0){
outState.putInt("rate", rate);
}
outState.putBoolean("check_box", seen);
onRestrore:
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
seen = savedInstanceState.getBoolean("check_box");
rate = savedInstanceState.getInt("rate");
checkBox_seen.setChecked(seen);
seekbar.setProgress(rate);
}
Vous voulez dire désactiver le changement d'orientation? – Yozh
Non. Chaque fois que l'orientation change d'activité, elle recrée les données de cette activité. Cela empêchera la récréation d'activité lors du changement d'orientation. – chandil03
Cela ne fonctionne pas, le dialogue disparaît toujours. – Yozh