Search code examples
androidandroid-fragmentscustomdialog

Dialog box disappears during orientation change in fragment


So I am not a very experience Android programmer, so please be gentle with me :)

I am trying to create an app that uses fragements and from within one of these fragments I am calling a custom dialog box.

//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();

This code works fine and I have no issues with it. But when there is a screen orientation change then my dialog box disappears.

Now I have read several posts on this forum, and other places, so I understand why this is occuring, but I don't find a solution to stop it.

I have tried the 'trick' with the manifest file, but it doesn't work. (Perhaps because it is in the fragment and not the activity?)

My manifest file includes;

<activity
        android:name="com.mycompany.myapp.MainActivity"
        android:configChanges="keyboardHidden|orientation"
....

and in my main activity I have

@Override
public void onConfigurationChanged(Configuration newConfig) 
{
    super.onConfigurationChanged(newConfig);
setContentView(R.layout.activity_main);
}

But this doesn't work.

I also see many comments say that this is not recommened, but can't see how to solve this issue.

Thanks for your help


Solution

  • Up to API 13 there was a new value to the configChanges attribute, screenSize

    So if you're using large screens make sure to add screenSize in your configChanges attribute:

    android:configChanges="orientation|keyboardHidden|screenSize"
    

    i.e.

    <activity
        android:name=".MyMainActivity"
        android:configChanges="orientation|keyboardHidden|screenSize" 
        android:label="@string/app_name" >
    

    Reference