Android DialogFragment不会解散

前端之家收集整理的这篇文章主要介绍了Android DialogFragment不会解散前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在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()关闭对话框; dismissAllowingStateLoss();使用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既不停止,也不调用DestroyView,Detach方法.

这是另一个尝试从对话框中关闭尝试调用DialogFragment中对话框的dismiss()方法.

boton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {               
            Log.d(TAG,"doDismiss");
            FiltroDialog.this.getDialog().dismiss();
        }
    });

不解除对话框并且不调用onDismiss既不停止,Detach方法.

我在应用程序中有一些对话框,从来没有遇到过这个问题,我不完全是Android编程的新手,但我不知道我做错了什么?这是compat库中的一个错误

最佳答案
我今天遇到了同样的问题.

你是如何处理对话框中的视图的?对我来说问题是我有一个FrameLayout,然后我将视图膨胀到(基于一些信息).我不知道为什么这会打破它,但确实如此.当我用一个简单的viewstub替换framelayout时,它工作得很好.

希望它成功.祝好运!

猜你在找的Android相关文章