我正在开发Xamaran.Android项目并尝试实现DialogFragment。我看了this video以设置弹出窗口。
这是我的DialogFragment的代码:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
base.OnCreateView(inflater, container, savedInstanceState);
var view = inflater.Inflate(Resource.Layout.WordChooser, container, false);
SubmitButton = view.FindViewById<Button>(Resource.Id.SubmitButton);
SubmitButton.Click += SubmitButton_Click;
return view;
}
private void SubmitButton_Click(object sender, EventArgs e)
{
}
这是我的活动来电者:
private void FooButton_Click(object sender, EventArgs e)
{
var trasaction = FragmentManager.BeginTransaction();
WordChooser wordChooserDialog = new WordChooser();
wordChooserDialog.Show(trasaction, "word chooser fragment");
}
我不知道如何从我的DialogFragment设置值到我的Activity并关闭DialogFragment。
我尝试使用this link的第二个答案,但无法使用getActivity();
答案 0 :(得分:1)
getXYZ
和setXYZ
得到c#yfied。这意味着Xamarin将getter和setter映射到属性中。在您的情况下,getActivity
是Activity
的属性DialogFragment
的获取者。
要传递数据,您可以
DoSomething
Activity
投放到MainActivity
或您的通话活动DoSomething
<强>对话强>
private void SubmitButton_Click(object sender, EventArgs e)
{
((MainActivity) Activity).DoSomething("something");
Dismiss();
}
<强>活动强>
public class MainActivity : Activity
{
//...
public void DoSomething(string something)
{
}
}
还有一些其他可能的解决方案,例如
重要强>
不要忘记取消注册您的事件处理程序。每个+=
都应该在代码中的某个位置-=
对应。例如。关闭片段之前SubmitButton.Click -= SubmitButton_Click
。