Tôi có một lớp v4 hỗ trợ FragmentActivity thực hiện hai phần cạnh nhau (loại như gmail) và một nút có thể hiển thị DialogFragment.Android DialogFragment biến mất sau khi thay đổi định hướng
Tất cả đều hoạt động tốt trừ khi tôi có thay đổi định hướng. Khi tôi có một sự thay đổi định hướng, các trạng thái của các mảnh vỡ sẽ không được lưu lại.
Và vấn đề chính là nếu tôi có một FragmentDialog mở, nó chỉ đơn giản biến mất.
Tôi đã đặt setRetainInstance(true);
trong tất cả các đoạn nhưng không hiệu quả.
Trong tệp kê khai của tôi, tôi đã bao gồm android:configChanges="orientation"
nhưng vẫn không giúp được gì.
Đây là các mẫu mã của tôi, cảm ơn sự giúp đỡ của bạn.
public class AddMasterDialog extends DialogFragment {
private int mTitle;
private int mPrompt;
private OnClickListener onSaveListener;
private OnClickListener onCancelListener;
public AddMasterDialog newInstance(int title, int prompt) {
AddMasterDialog simpleDialog = new AddMasterDialog(title, prompt);
return simpleDialog;
}
public AddMasterDialog() {
// Empty constructor required for DialogFragment
}
public AddMasterDialog(int title, int prompt) {
// Empty constructor required for DialogFragment
mTitle = title;
mPrompt = prompt;
}
public void setSaveButton(OnClickListener save){
onSaveListener = save;
}
public void setCancelButton(OnClickListener cancel){
onCancelListener = cancel;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//if(savedInstanceState == null){
View view = inflater.inflate(R.layout.add_new_simple, container);
getDialog().setTitle(mTitle);
((TextView) view.findViewById(R.id.add_simple_new_value_prompt)).setText(mPrompt);
Button saveButton = (Button) view.findViewById(R.id.add_simple_save_button);
saveButton.setOnClickListener(onSaveListener);
//Cancel Button
Button cancelButton = (Button) view.findViewById(R.id.add_simple_cancel_button);
cancelButton.setOnClickListener(onCancelListener);
return view;
//}
}
}
và các hoạt động chính của tôi:
private void initiateAddMasterPopupWindow() {
try {
addMasterDialog = new AddMasterDialog(R.string.add_new_master_dialog_title, R.string.add_master_new_value_prompt);
addMasterDialog.setSaveButton(saveNewMasterClickListener);
addMasterDialog.setCancelButton(cancelNewMasterClickListener);
FragmentManager fm = getSupportFragmentManager();
addMasterDialog.show(fm, ADD_NEW_MASTER);
} catch (Exception e) {
e.printStackTrace();
}
}
mát sửa chữa, hoạt động độc đáo. –