2012-08-06 33 views
0

我看到很多解决方案来维护AlertDialog,并且大多数解决方案可能在屏幕暗淡时无法工作。但这使我工作正常,有没有其他轻量级的方式来做到这一点,我想从ACLFragment内使用它。正确处理AlertDialog在更改配置时

public class Test extends Activity { 

    AlertDialog dialog; 
    boolean dialog_should_be_shown = false; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Button btn = new Button(this); 
     btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       createDialog(); 
      } 
     }); 
     setContentView(btn); 
     if (savedInstanceState != null) { 
      dialog_should_be_shown = savedInstanceState.getBoolean("flag", 
        false); 
     } 
    } 

    private void createDialog() { 
     dialog = new AlertDialog.Builder(Test.this).setMessage("HEllo") 
       .setCancelable(true).create(); 
     dialog.show(); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 

     super.onSaveInstanceState(outState); 
     outState.putBoolean("flag", dialog_should_be_shown); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     if (dialog_should_be_shown) { 
      createDialog(); 
     } 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     if (dialog != null && dialog.isShowing()) { 
      dialog_should_be_shown = true; 
      dialog.dismiss(); 
     } else { 
      dialog_should_be_shown = false; 
     } 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_test, menu); 
     return true; 
    } 
} 

更新: 我不想保留在内存中Framgnet

回答