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

Android Java Fragment中获取EditText输入(点击按钮无数据问题)

问题分析与解决:Fragment中点击按钮无法获取EditText输入

问题原因

你在onCreateView方法中提前获取了EditText的内容并赋值给input变量,此时Fragment刚完成视图初始化,EditText里还没有用户输入的内容,input存储的是空字符串。后续点击按钮时,Toast展示的是这个一开始就固定的空值,而非用户输入后的实时内容。

修复代码

修改TestFragment的代码,将获取EditText内容的逻辑移到按钮的点击事件内部,这样每次点击按钮时都会实时读取当前EditText的输入:

public class TestFragment extends Fragment {

    Button btnTest;
    EditText txtUserInput;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_test, container, false);
        
        btnTest = view.findViewById(R.id.btnTest);
        txtUserInput = view.findViewById(R.id.txtUserInput);

        btnTest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 点击按钮时实时获取输入内容
                String input = txtUserInput.getText().toString();
                Toast.makeText(getActivity(), input, Toast.LENGTH_LONG).show();
            }
        });

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    }
}

补充说明

如果需要在Fragment生命周期的其他阶段获取EditText内容,也要确保操作时机是在用户完成输入之后,避免提前读取到初始空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:05:42