如何在MainActivity中设置DialogFragment的onDismissListener?
How to set onDismissListener of DialogFragment in MainActivity?
我写 class MyWindow
扩展了 DialogFragment
public class MyWindow extends DialogFragment {
public Button yes;
public Button cancel;
public Button no;
public int result;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.save_layout, container);
initButton(view);
return view;
}
private void initButton(View view) {
yes = view.findViewById(R.id.yes_button);
cancel = view.findViewById(R.id.cancel_button);
no = view.findViewById(R.id.no_button);
yes.setOnClickListener(new View.OnClickListener() {//
@Override
public void onClick(View view) {
result = 1;
dismiss();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result = 0;
dismiss();
}
});
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result = -1;
dismiss();
}
});
}
}
我想在 MainActivity
中创建一个 MyWindow
(mywindow
) 的实例,并在 MainActivity 关闭后执行一个函数来读取 myWindow.result
。我试过在MainActivity
中直接调用mywindow.setOnDismissListener
,但是程序无法编译。我试着添加
@Override
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
Activity activity = getActivity();
if (activity instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
}
}
到 MyWindow,它仍然不起作用。
有没有办法在MainActivity中设置DialogInterface的onDismissListener?
编辑:
在 MainActivity
中,我用
创建了 myWindow
myWindow = new MyWindow();
myWindow.show(getSupportFragmentManager(), "confirm_dialog");
使您的 Activity 实现 OnDismissListener
public final class YourActivity extends Activity implements DialogInterface.OnDismissListener {
@Override
public void onDismiss(final DialogInterface dialog) {
//Fragment dialog had been dismissed
}
}
DialogFragment 已经实现了 OnDismissListener,只需覆盖该方法并调用 Activity.
public final class DialogFragmentCustom extends DialogFragment {
///blah blah
@Override
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
final Activity activity = getActivity();
if (activity instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
}
}
}
试试这个。
我写 class MyWindow
扩展了 DialogFragment
public class MyWindow extends DialogFragment {
public Button yes;
public Button cancel;
public Button no;
public int result;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.save_layout, container);
initButton(view);
return view;
}
private void initButton(View view) {
yes = view.findViewById(R.id.yes_button);
cancel = view.findViewById(R.id.cancel_button);
no = view.findViewById(R.id.no_button);
yes.setOnClickListener(new View.OnClickListener() {//
@Override
public void onClick(View view) {
result = 1;
dismiss();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result = 0;
dismiss();
}
});
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result = -1;
dismiss();
}
});
}
}
我想在 MainActivity
中创建一个 MyWindow
(mywindow
) 的实例,并在 MainActivity 关闭后执行一个函数来读取 myWindow.result
。我试过在MainActivity
中直接调用mywindow.setOnDismissListener
,但是程序无法编译。我试着添加
@Override
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
Activity activity = getActivity();
if (activity instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
}
}
到 MyWindow,它仍然不起作用。
有没有办法在MainActivity中设置DialogInterface的onDismissListener?
编辑:
在 MainActivity
中,我用
myWindow
myWindow = new MyWindow();
myWindow.show(getSupportFragmentManager(), "confirm_dialog");
使您的 Activity 实现 OnDismissListener
public final class YourActivity extends Activity implements DialogInterface.OnDismissListener {
@Override
public void onDismiss(final DialogInterface dialog) {
//Fragment dialog had been dismissed
}
}
DialogFragment 已经实现了 OnDismissListener,只需覆盖该方法并调用 Activity.
public final class DialogFragmentCustom extends DialogFragment {
///blah blah
@Override
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
final Activity activity = getActivity();
if (activity instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
}
}
}
试试这个。