我在 Android 中有一个自定义对话框,我在 onCreateView 方法上创建了对话框视图。
public class FiltroDialog extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
当我尝试关闭对话框时,我在对话框中有一个由 onClickListener 调用的方法
boton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"doDismiss");
FiltroDialog.this.dismiss();
}
});
我已经覆盖了对话框的几个 onMethods 以查看对话框发生了什么。
@Override
public void onDestroyView() {
super.onDestroyView();
Log.d(TAG, "onDestroyView");
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.d(TAG, "onAttach");
}
@Override
public void onDetach() {
super.onDetach();
Log.d(TAG, "onDetach");
}
@Override
public void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
Log.d(TAG,"onCancel");
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
Log.d(TAG,"onDismiss");
}
我试图用dismiss()关闭对话框;解雇允许状态损失();使用 FragmentTransaction 并且每次我都有相同的结果。
D/FiltroDialog(30492): doDismiss
D/FiltroDialog(30492): onStop
D/FiltroDialog(30492): onDestroyView
D/FiltroDialog(30492): onDetach
但是对话框不会从屏幕上消失,使用后退按钮,对话框会正确消失但使用dismiss() 或FragmentTransaction.remove 方法我只能到达Stop、DestroyView、Detach 但不是onDismiss()
当我再次单击该按钮时,LogCat 中仅显示此按钮
D/FiltroDialog(30492): doDismiss
我尝试了几种方法来关闭对话框。这是我用来显示活动对话框的代码(也从片段中尝试过)
FiltroDialog newFragment = FiltroDialog.newInstance();
newFragment.show(getSupportFragmentManager(), TAG_DLG_FILTROS);
这是尝试从活动中关闭对话框的代码(也从片段中尝试过,结果相同)
DialogFragment prev = (DialogFragment) getSupportFragmentManager().findFragmentByTag(TAG_DLG_FILTROS);
if (prev != null) {
prev.dismiss();
}
这是另一个尝试从活动中关闭的尝试(也从片段中尝试过,结果相同)
Fragment prev = getSupportFragmentManager().findFragmentByTag(TAG_DLG_FILTROS);
if (prev != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.remove(prev);
ft.commit();
}
这是另一个尝试从对话框中关闭的尝试,试图在 DialogFragment 中调用对话框的 cancel() 方法。
boton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"doDismiss");
FiltroDialog.this.getDialog().cancel();
}
});
不关闭对话框,也不调用 onDismiss 和 Stop、DestroyView、Detach 方法。
这是另一个尝试从对话框中关闭的尝试,尝试在 DialogFragment 中调用对话框的 dismiss() 方法。
boton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"doDismiss");
FiltroDialog.this.getDialog().dismiss();
}
});
不关闭对话框,也不调用 onDismiss 和 Stop、DestroyView、Detach 方法。
我在应用程序中有一些对话框,从来没有遇到过这个问题,我在 android 编程方面并不完全是新手,但我不知道我做错了什么?这是兼容库中的错误吗?