对话框在片段中的方向更改期间消失

jas*_*ith 2 android customdialog android-fragments

所以我不是一个非常有经验的Android程序员,所以请温柔地跟我:)

我正在尝试创建一个使用fragements的应用程序,并从其中一个片段中调用自定义对话框.

//create dialog
final Dialog dialog = new Dialog(getActivity());
dialog.setCancelable(false);
dialog.setContentView(R.layout.fragment_update_dialog);

//set up data in dialog here

Button bUpdate = (Button) dialog.findViewById(R.id.bDialogUpdate);
bUpdate.setOnClickListener(new OnClickListener() 
{
//define onclick listener code here
});
dialog.show();
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,我没有任何问题.但是当屏幕方向改变时,我的对话框就会消失.

现在我已经阅读了这个论坛和其他地方的几个帖子,所以我理解为什么会发生这种情况,但我找不到解决方案来阻止它.

我已尝试使用清单文件的'技巧',但它不起作用.(也许是因为它在片段而不是活动?)

我的清单文件包括;

<activity
        android:name="com.mycompany.myapp.MainActivity"
        android:configChanges="keyboardHidden|orientation"
....
Run Code Online (Sandbox Code Playgroud)

在我的主要活动中

@Override
public void onConfigurationChanged(Configuration newConfig) 
{
    super.onConfigurationChanged(newConfig);
setContentView(R.layout.activity_main);
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我也看到很多评论说这不是推荐,但看不出如何解决这个问题.

谢谢你的帮助

Yor*_*ric 13

尝试使用DialogFragment.方向更改后重新启动.您需要扩展此类,如文档中所示,并使用它来显示对话框.

  • DialogFragment是要走的路.无需对清单进行未经推荐的更改. (3认同)

Ron*_*hta 11

在API 13之前,configChanges属性screenSize有一个新值

因此,如果您使用大屏幕,请确保在configChanges属性中添加screenSize:

android:configChanges="orientation|keyboardHidden|screenSize"
Run Code Online (Sandbox Code Playgroud)

<activity
    android:name=".MyMainActivity"
    android:configChanges="orientation|keyboardHidden|screenSize" 
    android:label="@string/app_name" >
Run Code Online (Sandbox Code Playgroud)

参考