3 回答

TA貢獻1883條經(jīng)驗 獲得超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條經(jīng)驗 獲得超7個贊
如果您要更改方向的布局,我不會放在android:configChanges="orientation"清單中,因為無論如何您都是在重新創(chuàng)建視圖。
使用以下方法保存活動的當前狀態(tài)(如輸入的文本,顯示的對話框,顯示的數(shù)據(jù)等):
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
這樣,活動將再次通過onCreate進行,然后調(diào)用onRestoreInstanceState方法,您可以在其中再次設(shè)置EditText值。
如果要存儲更復雜的對象,可以使用
@Override
public Object onRetainNonConfigurationInstance() {
}
在這里,您可以存儲任何對象,在onCreate中,只需調(diào)用getLastNonConfigurationInstance();即可獲取該對象。
- 3 回答
- 0 關(guān)注
- 908 瀏覽
添加回答
舉報