3 回答
TA贡献1883条经验 获得超3个赞
// Prevent dialog dismiss when orientation changes
private static void doKeepDialog(Dialog dialog){
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(lp);
}
public static void doLogout(final Context context){
final AlertDialog dialog = new AlertDialog.Builder(context)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(R.string.titlelogout)
.setMessage(R.string.logoutconfirm)
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
...
}
})
.setNegativeButton("No", null)
.show();
doKeepDialog(dialog);
}
TA贡献1847条经验 获得超7个赞
如果您要更改方向的布局,我不会放在android:configChanges="orientation"清单中,因为无论如何您都是在重新创建视图。
使用以下方法保存活动的当前状态(如输入的文本,显示的对话框,显示的数据等):
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
这样,活动将再次通过onCreate进行,然后调用onRestoreInstanceState方法,您可以在其中再次设置EditText值。
如果要存储更复杂的对象,可以使用
@Override
public Object onRetainNonConfigurationInstance() {
}
在这里,您可以存储任何对象,在onCreate中,只需调用getLastNonConfigurationInstance();即可获取该对象。
- 3 回答
- 0 关注
- 870 浏览
添加回答
举报