我已经阅读了这个问题的所有相关问题并尝试了所有内容(包括使用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");
答案 0 :(得分:0)
首先,如果您使用foo
,则应使用android.support.v4.app.DialogFragment
代替android.app.DialogFragment
。还可以使用AppCompatActivity
答案 1 :(得分:0)
我将错误跟踪到活动中的错误,该错误仅在创建对话框碎片时遇到。对话框片段实际上是好的。