当显示android.support.v7.app.AlertDialog并旋转屏幕时,应用程序在屏幕旋转时崩溃

时间:2015-06-01 08:08:04

标签: android dialog

我已经阅读了这个问题的所有相关问题并尝试了所有内容(包括使用setRetainInstance)并且没有找到任何可行的方法。我把我的dialogFragment削减到骨头(见下文),我仍然有问题。阅读过其他地方的博客,其中作者声称他已经在StackOverflow上尝试了所有内容而没有成功,我决定按照他的方式去做,并在onStop中关闭dialogFragment并在onStart中重新创建它。但是我想我会问这个问题有新的解决办法。

在Android Studio中调试我只是收到一个不幸的是应用程序已停止消息,没有陷阱异常且没有logcat输出。

以下是仍然失败的大大减少的代码:

import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;

public class TextViewDialogFragment extends DialogFragment
{
    public TextViewDialogFragment()
    {
        super();
    }

    static public TextViewDialogFragment newInstance(int title, @Nullable String message, int identifier, int inputType, int positiveText, int negativeText, boolean cancelable)
    {
        TextViewDialogFragment fragement = new TextViewDialogFragment();
        return fragement;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        // Using AppCompatActivity activity = (AppCompatActivity) getActivity(); does not help.
        Activity activity = getActivity();
        AlertDialog.Builder alert = new AlertDialog.Builder(activity);
        alert.setCancelable(true).setTitle("title");
        AlertDialog dialog = alert.create();
        return dialog;
    }
}

我使用以下代码创建并显示来自AppCompatActivity的对话框:

folderAddGetName = TextViewDialogFragment.newInstance(R.string.add_folder, resources.getString(R.string.addFolderMessage, selectedFolderView.getText()), 1, InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES, R.string.add, android.R.string.cancel, true);
folderAddGetName.show(getFragmentManager(), "addFolder");

2 个答案:

答案 0 :(得分:0)

首先,如果您使用foo,则应使用android.support.v4.app.DialogFragment代替android.app.DialogFragment。还可以使用AppCompatActivity

答案 1 :(得分:0)

我将错误跟踪到活动中的错误,该错误仅在创建对话框碎片时遇到。对话框片段实际上是好的。