The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex
As suggested by many people here,
ReplyDeleteandroid:configChanges="keyboardHidden|orientation"
is not a solution. It's a hack at best. The correct way to handle this is to manage dialogs through your activity. You need to override a few methods in your activity code, Like so:
protected Dialog onCreateDialog(int id) {
// create and return your dialog instance here
AlertDialog dialog = new AlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.indicator_input_error)
.setMessage(message)
.create();
dialog.setButton(
DialogInterface.BUTTON_POSITIVE,
context.getString(R.string.OK),
(DialogInterface.OnClickListener) null);
return dialog;
}
protected void onPrepareDialog(int id, Dialog dialog) {
// You dialog initialization code here
}
After you're done with this. You show your dialog using:
showDialog(yourDialogID);
Once you're done implementing this, your'll see that your dialog will also be recreated if configuration changes occur. The best part is that your Activity will manage your dialog for you. It will be reused when possible, reducing dialog load times if you perform heavy initialization.
Note from Android SDK documentation:
Using this attribute should be avoided and used only as a last-resort. Please read Handling Runtime Changes for more information about how to properly handle a restart due to a configuration change.
i think may be you have to take
ReplyDeleteandroid:configChanges="keyboardHidden|orientation"
in mainfest of your activity
Its becuase the activity is restarting when you rotate the device.
ReplyDeleteIf you add
android:configChanges="keyboardHidden|orientation"
Tag to each activity you dont want to restart on configuration change add the following tag.
Perhaps, you invoked setCancelable(true) on that dialog. But not sure if this could affect the dialog behavior.
ReplyDeleteI think probably Because OnCreate method is called upon orientation change and activity is again created so dialog disappears.
ReplyDeletewhen you rotate your device it restarts your activity that's why your dialog get disappear to solve this problem just include following attributes in your android-manifest xml
ReplyDeleteandroid:configChanges="keyboardHidden|orientation"