2015-07-25 2 views
0

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); 

    } 

Répondre

0

Essayez de désactiver les loisirs de l'activité ajoutant android:configChanges="orientation|screenSize" à votre activité dans le fichier manifeste.

+0

Vous voulez dire désactiver le changement d'orientation? – Yozh

+0

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

+0

Cela ne fonctionne pas, le dialogue disparaît toujours. – Yozh