다음 작업을 올바르게 수행하면 누구나 볼 수 있습니까? 진행 표시가있는 조각이 있는데 오리엔테이션 스위치에서 작동해야합니다. 저는 현재 지금처럼 이렇게 내 활동에방향 스위치를 통해 작동하는 ProgressDialog (Fragment)
// I am using the compat libraries
import android.support.v4.app.DialogFragment;
public class ProgressDialogFragment extends DialogFragment {
private ProgressDialog mProgressDialog = null;
private int mMax = 100;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, 0);
setRetainInstance(true);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Title");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(true);
mProgressDialog.setProgress(0);
mProgressDialog.setMax(mMax);
mProgressDialog.setCanceledOnTouchOutside(false);
return mProgressDialog;
}
// there seems to be a bug in the compat library - if I don't do the following - the dialog is not show after an orientation switch
@Override
public void onDestroyView() {
if (getDialog() != null && getRetainInstance())
getDialog().setDismissMessage(null);
super.onDestroyView();
}
public void setMax(int arg1) {
mProgressDialog.setMax(arg1);
mMax = arg1;
}
public void setProgress(int arg1) {
mProgressDialog.setProgress(arg1);
}
}
나는이 ProgressDialogFragment를 작성하고 내가 보여주기 위해 대화 상자를 필요로 할 때 나는() 표시를 호출합니다. onCreateDialog 메서드에서 mProgressDialog가 이미 존재하는 경우이를 반환 할 수없는 이유를 이해하려고합니다. 즉 "content를 추가하기 전에 requestFeature()를 호출해야한다는 예외가 발생했습니다"). 확실히 조각의 사용 중 하나는 이러한 경우에 리소스를 다시 사용하는 것입니다. 이미 존재하는 대화 상자를 사용하는 대신 새 대화 상자를 만들어야하는 이유는 무엇입니까?
방향 스위치에서 onCreate 메서드가 호출되지 않습니다. 단편은 파괴되지 않고 다시 만들어집니다. – Lieuwe
죄송합니다 다시 전화 할 onCreateDialog 메서드를 의미합니다. –
방향 변경 사이의 진행 상황을 저장하려고합니까? –