0

我看到了许多需要维护的解决方案,AlertDialog其中大多数可能在屏幕变暗时不起作用。但是我做的这个很好用,还有其他轻量级的方法可以做到这一点,我想在里面使用FragmentACL

 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在内存中。

4

1 回答 1

1

改为使用 DialogFragment,它包含在支持库中,您可以使用 setRetainInstance(true) 保留它,

http://developer.android.com/reference/android/app/DialogFragment.html

于 2012-08-06T21:43:38.130 回答