【问题标题】:Xamarin Android - Dismiss DialogFragmentXamarin Android - 关闭 DialogFragment
【发布时间】:2017-07-21 09:19:50
【问题描述】:

我已经查看了几个关于如何关闭 DialogFragment 的不同线程,但似乎没有什么对我有用。当我从我拥有的点击事件切换到新活动时,我希望能够关闭 DialogFragment。我尝试使用 click 事件中的 this.Activity.Dismiss() 之类的东西,但也尝试了从我显示 DialogFragment 的位置:

if (_exportFragment != null)
            {
                _exportFragment.Dismiss();
            }

但这些似乎都不起作用。

编辑

这是我显示 DialogFragment 的地方:

gridview.ItemClick += delegate (object sender, AdapterView.ItemClickEventArgs args)
            {
                // DIALOG FRAGMENT
                FragmentTransaction ft = FragmentManager.BeginTransaction();
                //Remove fragment else it will crash as it is already added to backstack
                Fragment prev = FragmentManager.FindFragmentByTag("dialog");
                if (prev != null)
                {
                    ft.Remove(prev);
                }

                ft.AddToBackStack(null);

                // Create and show the dialog.
                _exportFragment = new VideoExportDialogFragment();
                _exportFragment.VideoCreationDate = VideoList[args.Position].CreationDate;
                //_exportFragment.
                _exportFragment.VideoPathFragment = VideoListPosition(args.Position);

                //_exportFragment.ThumbnailActivity = this;
                //Add fragment
                _exportFragment.Show(ft, "dialog");
                dismissLoader();
            };
        }

        private void dismissLoader()
        {
            if (_exportFragment != null)
            {
                _exportFragment.Dismiss();
            }
        }

【问题讨论】:

  • 只有Dismiss方法,developer.xamarin.com/api/member/…如果你自己方法的dismissDialog(),贴出它的代码
  • 抱歉,我现在编辑了这是我自己的函数,但我也尝试了 Dismiss(),但它仍然不起作用
  • 你能在对话框片段初始化和关闭上发布代码吗?
  • 我现在添加了。

标签: c# android xamarin.android android-dialogfragment dialogfragment


【解决方案1】:

当我从我拥有的点击事件切换到新的 Activity 时,我希望能够关闭 DialogFragment。

在此点击事件中,您可以使用FindFragmentByTag("dialog") 方法找到您要关闭的dialogFragment,然后您可以使用_exportFragment.Dismiss() 关闭此DialogFragment。像这样的代码:

bt.Click += (sender, e) =>
{
     MyDialogFragment _exportFragment = (MyDialogFragment)FragmentManager.FindFragmentByTag("dialog");
     if (_exportFragment != null)
     {
           _exportFragment.Dismiss();
     }
     //StartActivity(you);
};

【讨论】:

    猜你喜欢
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    相关资源
    最近更新 更多