Xamarin Android - 在 Fragment 中访问 textview onclick
Xamarin Android - Access textview onclick within a Fragment
我正在尝试在单独的 Click 函数中访问作为 Fragment 一部分的 TextView。
public class FragmentHome : AndroidX.Fragment.App.Fragment
{
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.fragment_home, container, false);
// Initialise View's Textviews & TextInput
TextView genderButton= view.FindViewById<TextView>(Resource.Id.genderButton);
TextView secondButton = view.FindViewById<TextView>(Resource.Id.secondButton);
TextInputEditText firstInput = view.FindViewById<TextInputEditText>(Resource.Id.firstInput);
// set up click actions
genderButton.Click += GenderButton_Click;
return view;
}
private void GenderButton_Click(object sender, System.EventArgs e)
{
if (genderButton.Text == "Male")
{
genderButton.Text = "Female";
}
else
{
genderButton.Text = "Male";
}
}
}
我正在尝试访问 genderButton
的文本,但收到错误消息“名称 'genderButton' 在当前上下文中不存在”。我尝试同时添加
TextView genderButton = FindViewById<TextView>(Resource.Id.genderButton);
和
View view = inflater.Inflate(Resource.Layout.fragment_home, container, false); TextView genderButton = view.FindViewById<TextView>(Resource.Id.genderButton);
但是第一个的问题是 FindViewById
在当前上下文中不存在,第二个选项显然不起作用,因为它会膨胀一个新的片段,而不是定义上下文对于 genderButton。
有没有一种方法可以正确定义 genderButton 的上下文或使用 Click 事件发送 genderButton 数据?
这是一个基本的 C# 作用域问题。您在 OnCreateView
内部声明 genderButton
,因此它仅在 内部 范围内具有该方法。如果你想在代码的其他地方使用它,你需要在 class 级别声明它,而不是在方法内部
TextView genderButton;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.fragment_home, container, false);
// Initialise View's Textviews & TextInput
genderButton= view.FindViewById<TextView>(Resource.Id.genderButton);
TextView secondButton = view.FindViewById<TextView>(Resource.Id.secondButton);
TextInputEditText firstInput = view.FindViewById<TextInputEditText>(Resource.Id.firstInput);
// set up click actions
genderButton.Click += GenderButton_Click;
return view;
}
我正在尝试在单独的 Click 函数中访问作为 Fragment 一部分的 TextView。
public class FragmentHome : AndroidX.Fragment.App.Fragment
{
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.fragment_home, container, false);
// Initialise View's Textviews & TextInput
TextView genderButton= view.FindViewById<TextView>(Resource.Id.genderButton);
TextView secondButton = view.FindViewById<TextView>(Resource.Id.secondButton);
TextInputEditText firstInput = view.FindViewById<TextInputEditText>(Resource.Id.firstInput);
// set up click actions
genderButton.Click += GenderButton_Click;
return view;
}
private void GenderButton_Click(object sender, System.EventArgs e)
{
if (genderButton.Text == "Male")
{
genderButton.Text = "Female";
}
else
{
genderButton.Text = "Male";
}
}
}
我正在尝试访问 genderButton
的文本,但收到错误消息“名称 'genderButton' 在当前上下文中不存在”。我尝试同时添加
TextView genderButton = FindViewById<TextView>(Resource.Id.genderButton);
和
View view = inflater.Inflate(Resource.Layout.fragment_home, container, false); TextView genderButton = view.FindViewById<TextView>(Resource.Id.genderButton);
但是第一个的问题是 FindViewById
在当前上下文中不存在,第二个选项显然不起作用,因为它会膨胀一个新的片段,而不是定义上下文对于 genderButton。
有没有一种方法可以正确定义 genderButton 的上下文或使用 Click 事件发送 genderButton 数据?
这是一个基本的 C# 作用域问题。您在 OnCreateView
内部声明 genderButton
,因此它仅在 内部 范围内具有该方法。如果你想在代码的其他地方使用它,你需要在 class 级别声明它,而不是在方法内部
TextView genderButton;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.fragment_home, container, false);
// Initialise View's Textviews & TextInput
genderButton= view.FindViewById<TextView>(Resource.Id.genderButton);
TextView secondButton = view.FindViewById<TextView>(Resource.Id.secondButton);
TextInputEditText firstInput = view.FindViewById<TextInputEditText>(Resource.Id.firstInput);
// set up click actions
genderButton.Click += GenderButton_Click;
return view;
}