如何从 EditText Android 获取值

Posted

技术标签:

【中文标题】如何从 EditText Android 获取值【英文标题】:How to get values from EditText Android 【发布时间】:2021-03-12 21:52:44 【问题描述】:

我有一堆 EditText 字段,我正在尝试获取它们的值。但它返回空字符串。这是我的代码:

public class add_product_fragment extends Fragment implements AdapterView.OnItemSelectedListener

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
        View view = inflater.inflate(R.layout.fragment_add_product, container, false);

        mName = view.findViewById(R.id.productName);
        productName = mName.getText().toString().trim();

        mPrice = view.findViewById(R.id.productPrice);
        productPrice = mPrice.getText().toString().trim();

        mDescription = view.findViewById(R.id.productDescription);
        productDescription = mDescription.getText().toString().trim();

        mQuantity = view.findViewById(R.id.productQuantity);
        productQuantity = mQuantity.getText().toString().trim();

        addToInventory = view.findViewById(R.id.addToInventoryBtn);

        addToInventory.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                System.out.println(productName + ", " + productDescription + ", " + productType
                        + ", " + productPrice + ", " + productQuantity);
            
        );

        return view;
    

因为Fragments 而无法正常工作还是我遗漏了什么?

【问题讨论】:

【参考方案1】:

只有在onResume() 返回后,用户才能与Activity's/Fragment's UI 交互。因此,在FragmentonCreateView() 生命周期方法中包含类似yourEditText.getText().toString() 的内容将不可避免地导致空字符串。

您应该在用户交互后“检索”EditTexts' 值,这意味着addToInventoryonClick 侦听器应如下所示:

addToInventory.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            System.out.println(
                mName.getText().toString().trim() + ", " +
                mDescription.getText().toString().trim() + ", " +
                mProductType.getText().toString().trim() + ", " +
                mPrice.getText().toString().trim() + ", " + 
                mQuantity.getText().toString().trim());
        
    );

【讨论】:

以上是关于如何从 EditText Android 获取值的主要内容,如果未能解决你的问题,请参考以下文章

从适配器类获取不同活动中的 EditText 值

如何从android中的edittext中获取选定的文本?

无法从edittext获取值到字符串

从android中动态创建的edittext获取价值?

Android控件ListView获取item中EditText值

Android控件ListView获取item中EditText值