编辑警报对话框中的文本

时间:2013-12-21 18:58:41

标签: java android xml

我有这个对话

case DIALOGO_EDIT:

final EditText editText = new EditText(context);

builder.setView(editText);

builder.setPositiveButton("Send", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int i) {

    }
});

builder.setNegativeButton("Close", null);

break;

但是当我旋转设备时,对话框消失了...如何解决这个问题并在旋转期间管理对话框?或者像WhatsApp

一样在“全屏”显示编辑文本

2 个答案:

答案 0 :(得分:0)

当旋转屏幕时,活动实际上会重新启动并终止,因此您需要使用生命周期方法保存并能够恢复数据。看看这里:Saving Persistent State

您可能需要查看this question here

答案 1 :(得分:0)

避免此问题的最佳方法是使用DialogFragment

创建一个扩展到DialogFragment的新类。覆盖onCreateDialog并返回旧的Dialog或AlertDialog。

你可以用DialogFragment.show(fragmentManager, tag)显示它。

这里有一个像监听器这样的活动的例子:

public class MyDialogFragment extends DialogFragment {

    public interface YesNoListener {
        void onYes();

        void onNo();
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        if (!(activity instanceof YesNoListener)) {
            throw new ClassCastException(activity.toString() + " must implement YesNoListener");
        }
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new AlertDialog.Builder(getActivity())
                .setTitle(R.string.dialog_my_title)
                .setMessage(R.string.dialog_my_message)
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        ((YesNoListener) getActivity()).onYes();
                    }
                })
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        ((YesNoListener) getActivity()).onNo();
                    }
                })
                .create();
    }
}

在你打电话的活动中:

new MyDialogFragment().show(getSupportFragmentManager(), "tag"); // or getFragmentManager() in API 11+

已经提出了这类问题,并且还有解决方案,这三个问题与您的问题相符(他们已经回答):

Android Best way of avoid Dialogs to dismiss after a device rotation

Android DialogFragment vs Dialog

How can I show a DialogFragment using compatibility package?