【问题标题】:(Android)Null check for EditText in ListView(Android)对 ListView 中的 EditText 进行空检查
【发布时间】:2023-03-30 03:00:01
【问题描述】:

我在对 ListView 行中的 EditText 执行空检查时遇到问题。基本上,每当我按下特定列表视图行中的save 按钮时,我想通过Integer.parseInt(((EditText) row.findViewById(R.id.milesEntry)).getText().toString());milesEntry EditText 视图中提取信息。当我用实际数据填写一行中的milesEntry EditText 字段并执行解析时,一切正常,但如果我单击save 而不向milesEntry 字段添加数据,我的应用程序将崩溃。这是我的问题的调试代码

           View row = entries.getChildAt(indexInAdapter - firstVisible);


            int milesFromTheEditText;
            EditText e = (EditText)row.findViewById(R.id.milesEntry);

            if(e.getText().toString == null) {
                System.out.println("ITS NULL");
            }else if(e.getText().toString() == "") {
                System.out.println("EMPTY STRING");
            }else {
            System.out.print("NEITHER");

问题是每当我单击save 按钮时,我的应用程序“NEITHER”上的milesEntry EditText 字段为空,因为它既不是空字符串也不是空字符串,因此无法手动捕获导致我的应用程序崩溃的异常。

另外,我也没有在milesEntry 的初始化中设置任何文本。只是一个提示,设置为“里程”。

编辑:已解决

我发现if(e.getText().toString().length == 0) 会为我捕获异常。

【问题讨论】:

  • 检查 Logcat 的确切异常。
  • 你也可以使用实用方法TextUtils.isEmpty(),它封装了长度和空值检查

标签: java android android-listview parseint


【解决方案1】:

这是不对的!!!

if(e.getText().toString == null)

如果getText() 返回null,您将获得 NPE。正确的做法如下:

if (e.getText() == null || e.getText().toString() == null || e.getText().toString().length() == 0) {
    ...
}

【讨论】:

    【解决方案2】:

    以这种方式使用:

    String value = e.getText().toString();
    if(value.length() > 0){
       //DO
    }else{
      //DO
    }
    

    【讨论】:

      【解决方案3】:

      “edittext”可以是空对象。和

      edittext.getText() 
      

      不能为空,但可以为空字符串。

      这样试试

          if(e == null){
              //EditText is null
          }else{
              String temp = e.getText().toString();
      
              if(TextUtils.isEmpty(temp)){//check string is empty or not
                  //there is no data
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-30
        • 2017-07-05
        • 2011-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        相关资源
        最近更新 更多