java - EditText 不断返回空 - Android

标签 java android null android-edittext

我正在尝试对 EditText 进行空检查(这应该很简单),但是每次我在两个 ET 中输入文本时 - 它们总是返回空:“”并且它们不应该(如果它们中有文本) 。

我查看了其他几篇与此相关的 SO 文章,但似乎没有一个修复程序可以解决该问题。

有人能发现我在这种情况下可能做错了什么吗?

源代码 fragment :

Java 类:

...

public void doneClicked(View v) throws JSONException {

    LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v1 = li.inflate(R.layout.profile_notification_settings_list_edit, null);

    final EditText label = (EditText) v1.findViewById(R.id.emaillabel);
    final EditText value = (EditText) v1.findViewById(R.id.emailvalue);

    String sValue = value.getText().toString();
    if (sValue.matches("")) {
        Toast.makeText(this, "You did not enter a value", Toast.LENGTH_SHORT).show();
        return;
    }

    String sLabel = label.getText().toString();
    if (sLabel.matches("")) {
        Toast.makeText(this, "You did not enter a label", Toast.LENGTH_SHORT).show();
        return;
    }

...

适配器:

@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
    view = inflater.inflate(R.layout.profile_notification_settings_list_edit, null);
    EditText value = (EditText) view.findViewById(R.id.emailvalue);
    value.setHint("Value");
    value.setText(valueList[i]);

    EditText label = (EditText) view.findViewById(R.id.emaillabel);
    if (labelList != null)
        label.setHint("Label");
    label.setText(labelList[i]);

完整来源:

Java 类:

https://pastebin.com/y1e9J1yE

适配器:

https://pastebin.com/Zqh3eCAk

最佳答案

因为每次单击都会创建一个新的 View ,它与屏幕上当前显示的 View 无关

public void doneClicked(View v) throws JSONException {

    // don't inflate new views
    LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v1 = li.inflate(R.layout.profile_notification_settings_list_edit, null);

    final EditText label = (EditText) v1.findViewById(R.id.emaillabel);
    final EditText value = (EditText) v1.findViewById(R.id.emailvalue);

    // ... code

注意 :您无法直接从 ListView 获取 rowItemVies 的数据,因此您需要在适配器类中添加方法来获取您可以使用 yourListView.getChildAt(position) 获取 rowView 的选定位置,并进一步从 rowView 中的子项获取数据

关于java - EditText 不断返回空 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47289306/

相关文章:

python - 如何将空值存储为整数字段

java - 为什么 FindBugs 在显式抛出 NPE 时会发出严重警告?

Android JNI pthread_create "too many arguments, expected 1"

java - 你如何在没有教程的情况下学习框架

java - 在 Eclipse 中为 Maven 项目使用 Tomcat

搜索 ArrayList 时发生 Java JSON ClassCastException

android - 获取数据库时出现无效的 Firebase 路径错误

c# - 如何从字节数组中删除空值?

java - valueOf() 的问题,在 Java 中将 char 转换为 Character

java - Eclipse Indigo (3.7) 的免费 UML 插件?