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 に答える