もう1つ後に表示するには、複数のダイアログフラグメントをQue
-
21-12-2019 - |
質問
未知のサイズのArrayList<DialogFragment>
を含むDialogFragment
がある場合は、最初のものが却下されると、次のものが表示され、次のものが表示されるようにプログラム的にキューを作成できます。?
for (int i = 0; i < tutorialViews.size(); i++) {
final int current = i;
DialogFragment someDialogFragment = dialogFragmentList.get(i);
if (i == 0) {
someDialogFragment .show(activity.get().getSupportFragmentManager(), "some_dialog_fragment");
}
if (i + 1 != dialogFragmentList.size() - 1) {
someDialogFragment.getDialog().setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
dialogFragmentList.get(current + 1).show(activity.get().getSupportFragmentManager(), "more_dialog_fragments");
}
});
}
}
.
dialog
内のdialogFragment
オブジェクトがまだインスタンス化されていないため、これは機能しません。
nullPointerException
を参照してください。 解決
FragmentDialogが閉じられたときに、コールバックに独自のインターフェースを作成します。
OnDialogFragHide mListener;
public interface OnDialogFragHide {
public void onFragmentDismissed();
}
public void setOnFragDismissedListener(OnDialogFragHide listener) {
mListener = listener;
}
.
for Loop
にインタフェースを登録するif (i == 0) {
tutorial.show(activity.get().getSupportFragmentManager(), "smoking_hawt");
}
if (i != tutorialViews.size() - 1) {
tutorial.setOnFragDismissedListener(new OnDialogFragHide() {
@Override
public void onFragmentDismissed() {
tutorialViews.get(current + 1).show(activity.get().getSupportFragmentManager(), "some_tag");
}
});
}
.
フラグメントが閉じられるたびに(つまり、 FragmentDialog
のonDismiss()
メソッドとonCancel()
メソッドではいつでも)呼び出しを呼び出します。onDismiss
/ onCancel
リスナー
@Override
public void onDismiss(DialogInterface dialog) {
if (mListener != null && !dismissed) {
dismissed = true;
mListener.onFragmentDismissed();
} else {
Log.e(TAG, "DialogFragmentDismissed not set");
}
super.onDismiss(dialog);
}
@Override
public void onCancel(DialogInterface dialog) {
if (mListener != null && dismissed) {
dismissed = true;
mListener.onFragmentDismissed();
} else {
Log.e(TAG, "DialogFragmentDismissed not set");
}
super.onCancel(dialog);
}
.
dismissed
Booleanはリスナーを2回呼ばないようにするための良い方法のためのものです。
所属していません StackOverflow