xamarin 中的空对话片段
Empty dialogfragment in xamarin
我正在尝试在 loginscreenactivity onclick 具有注册表单的按钮上弹出一个对话框片段。
我很确定对话框正在打开,但我无法正确充气。
当为 DialogFragment
单击按钮时,会出现一些东西,但它完全是空白的,其中我期待我为注册表单创建的布局。
仔细看了代码,好像没发现问题
这是我的DialogFragment
class dialog_fragment:DialogFragment
{
private Button btn;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return base.OnCreateView(inflater, container, savedInstanceState);
var view = inflater.Inflate(Resource.Layout.Register, container, false);
btn = view.FindViewById<Button>(Resource.Id.btnRegister);
btn.Click += delegate
{
Toast.MakeText(this.Activity, "something", ToastLength.Long).Show();
};
return view;
}
}
这包括我显示对话框的地方
btnRegister.Click += delegate
{
FragmentTransaction ft = FragmentManager.BeginTransaction();
dialog_fragment signup = new dialog_fragment();
signup.Show(ft,"dialog signup");
};
解决方案可能非常愚蠢,在此先感谢
Vaibhav,如您所料,解决方案很愚蠢,但这种情况确实发生了。
你有对话片段应该 return 一个对话,但遗憾的是在对话片段 class.
中有两个 return
您的解决方案在这里。
难怪它不会 return base.OnCreateView(inflater, container, savedInstanceState);
上的任何内容
你永远不会遇到线 var view = inflater.Inflate(Resource.Layout.Register, container, false);
删除base.OnCreateView()
之前的return
class dialog_fragment:DialogFragment
{
private Button btn;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//return
base.OnCreateView(inflater, container, savedInstanceState);
var view = inflater.Inflate(Resource.Layout.Register, container, false);
btn = view.FindViewById<Button>(Resource.Id.btnRegister);
btn.Click += delegate
{
Toast.MakeText(this.Activity, "something", ToastLength.Long).Show();
};
return view;
}
}
我正在尝试在 loginscreenactivity onclick 具有注册表单的按钮上弹出一个对话框片段。
我很确定对话框正在打开,但我无法正确充气。
当为 DialogFragment
单击按钮时,会出现一些东西,但它完全是空白的,其中我期待我为注册表单创建的布局。
仔细看了代码,好像没发现问题
这是我的DialogFragment
class dialog_fragment:DialogFragment
{
private Button btn;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return base.OnCreateView(inflater, container, savedInstanceState);
var view = inflater.Inflate(Resource.Layout.Register, container, false);
btn = view.FindViewById<Button>(Resource.Id.btnRegister);
btn.Click += delegate
{
Toast.MakeText(this.Activity, "something", ToastLength.Long).Show();
};
return view;
}
}
这包括我显示对话框的地方
btnRegister.Click += delegate
{
FragmentTransaction ft = FragmentManager.BeginTransaction();
dialog_fragment signup = new dialog_fragment();
signup.Show(ft,"dialog signup");
};
解决方案可能非常愚蠢,在此先感谢
Vaibhav,如您所料,解决方案很愚蠢,但这种情况确实发生了。
你有对话片段应该 return 一个对话,但遗憾的是在对话片段 class.
中有两个 return您的解决方案在这里。
难怪它不会 return base.OnCreateView(inflater, container, savedInstanceState);
你永远不会遇到线 var view = inflater.Inflate(Resource.Layout.Register, container, false);
删除base.OnCreateView()
class dialog_fragment:DialogFragment
{
private Button btn;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//return
base.OnCreateView(inflater, container, savedInstanceState);
var view = inflater.Inflate(Resource.Layout.Register, container, false);
btn = view.FindViewById<Button>(Resource.Id.btnRegister);
btn.Click += delegate
{
Toast.MakeText(this.Activity, "something", ToastLength.Long).Show();
};
return view;
}
}