You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EditText内容无法保存问题求助(附代码示例)

问题分析与解决方案

看起来你的问题出在EditText的引用作用域以及可能的View复用导致的引用失效上,让我一步步帮你解决:

核心问题点

  • 你定义的bevasarlolista如果是局部变量(比如在OnBindViewHolder或者某个方法内部声明),当方法执行完毕后,这个引用会失去效力,等到按钮点击时,它可能指向的是一个已经被回收或者错误的View实例,导致获取不到输入的文本。
  • 另外,在C#中直接用==比较字符串可能会因为引用不同导致判断异常(不过你说Toast能弹出,说明这个条件是成立的,但还是建议规范写法)。

修复步骤

1. 将EditText声明为类成员变量

把EditText bevasarlolista从局部变量改成类的成员变量,确保在点击回调中能访问到正确的实例:

// 在类的顶部声明成员变量
private string lista;
private EditText bevasarlolista;

// 在View初始化完成的地方(比如Fragment的OnCreateView或者Activity的OnCreate)获取引用
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    var view = inflater.Inflate(Resource.Layout.YourLayout, container, false);
    bevasarlolista = view.FindViewById<EditText>(Resource.Id.bevasarlo);
    // 其他初始化代码...
    return view;
}

2. 优化按钮点击事件的实现

如果你的代码是在列表(比如RecyclerView)的绑定逻辑里,最好通过点击事件的sender来获取当前的View上下文,避免因为View复用导致的引用错误:

// 绑定按钮点击事件的代码
if (string.Equals(items[position], "Bevásárlólista", StringComparison.Ordinal))
{
    Button mentes = view.FindViewById<Button>(Resource.Id.hozzaad);
    bevasarlolista.Text = lista;
    // 移除旧的点击事件(避免重复绑定)
    mentes.Click -= bevasarlolistaMentese;
    mentes.Click += bevasarlolistaMentese;
}

// 点击回调方法优化
private void bevasarlolistaMentese(object sender, EventArgs e)
{
    Button clickedBtn = sender as Button;
    if (clickedBtn == null) return;
    
    // 从当前按钮的父容器中获取EditText实例
    EditText currentEditText = clickedBtn.Parent.FindViewById<EditText>(Resource.Id.bevasarlo);
    if (currentEditText != null)
    {
        lista = currentEditText.Text;
        Toast.MakeText(Application.Context, currentEditText.Text, ToastLength.Long).Show();
    }
}

3. 额外注意事项

  • 确保你的EditText的Resource.Id.bevasarlo在布局文件中是唯一且正确的,没有拼写错误。
  • 如果是在RecyclerView中,记得在OnBindViewHolder中更新EditText的文本时,要基于当前项的数据,避免数据错乱。

这样修改后,你应该就能正确获取到EditText中的输入内容,Toast也会显示你输入的文本了!

内容的提问来源于stack exchange,提问作者Zoltan Kiraly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:50:03