【问题标题】:Android Spinner validationAndroid Spinner 验证
【发布时间】:2019-07-30 03:56:31
【问题描述】:

我需要在Android 中验证Spinner所选项目

我尝试了以下代码,但它不起作用。

if (Spinner1.getSelectedItem().toString().trim() == "Pick one") {
    Toast.makeText(CallWs.this, "Error", Toast.LENGTH_SHORT).show();
}

代码有什么问题,我该如何解决?

【问题讨论】:

    标签: android spinner android-spinner


    【解决方案1】:

    使用.equals.equalsIgnoreCase 比较java/android 中的两个字符串,而不是==

    试试这个

    if (Spinner1.getSelectedItem().toString().trim().equals("Pick one")) {
        Toast.makeText(CallWs.this, "Error", Toast.LENGTH_SHORT).show();
    }
    

    【讨论】:

      【解决方案2】:

      只需使用这个。

      else if (Spinner1.getSelectedItem().toString().trim().equalsIgnoreCase("Pick one")) {
                  Toast.makeText(CallWs.this, "Error",
                          Toast.LENGTH_SHORT).show();
      

      【讨论】:

      • 永远不要尝试使用 == 运算符比较两个字符串。比较两个字符串对编程来说是一件坏事。
      【解决方案3】:

      使用equals("Pick one") 并始终使用equals() 方法检查相等性String 键入Java(除非您正在检查reference相等)如下;

      if (Spinner1.getSelectedItem().toString().trim().equals("Pick one")) {
          Toast.makeText(CallWs.this, "Error", Toast.LENGTH_SHORT).show();
      }
      

      你的代码有什么问题;您正在使用==,这会导致检查Spinner1.getSelectedItem().toString() 是否与"Pick one"相同的引用,这将始终是错误的,因为“选择一个”是new String() 实例 em>

      详情请查看:

      【讨论】:

        【解决方案4】:

        创建一个名为 spinner_item.xml 的新布局:

        <?xml version="1.0" encoding="utf-8"?>
        
        <TextView xmlns:android="http://schemas.android.com/apk/res/android"
            android:gravity="center_vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        

        在您的活动 MainActivity.java 中初始化您的微调器视图:

        Spinner mySpinner= (Spinner) findViewById(R.id.mySpinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.items_array, R.layout.spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mySpinner.setAdapter(adapter);
        

        最后使用下面的方法来验证你的微调器:

        boolean validateSpinner(Spinner spinner, String error){
                View selectedView = spinner.getSelectedView();
                if (selectedView != null && selectedView instanceof TextView) {
                    TextView selectedTextView = (TextView) selectedView;
                    if (selectedTextView.getText().equals("")) {
                        selectedTextView.setError(error);
                        Toast.makeText(this, error, Toast.LENGTH_LONG).show();
                        return false;
                    }
                }
                return true;
            }
        

        【讨论】:

          【解决方案5】:

          试试这个..

          else if (Spinner1.getSelectedItem().toString().trim().equals("Pick one")) {
                          Toast.makeText(CallWs.this, "Error",
                                  Toast.LENGTH_SHORT).show();
          

          == 总是只比较两个引用(即对于非基元) - 即它测试两个操作数是否引用同一个对象。

          但是,equals 方法可以被覆盖 - 所以两个不同的对象仍然可以相等......更多info

          【讨论】:

            【解决方案6】:
            boolean validateSpinner(Spinner spinner, String error){
            
                View selectedView = spinner.getSelectedView();
                if (selectedView != null && selectedView instanceof TextView) {
                    TextView selectedTextView = (TextView) selectedView;
                    if (selectedTextView.getText().equals("Select Academic Year")) {
                        selectedTextView.setError(error);
                        Toast.makeText(this, error, Toast.LENGTH_LONG).show();
                        return false;
                    }
                }
                return true;
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-10-24
              • 1970-01-01
              • 1970-01-01
              • 2017-02-15
              • 2011-09-19
              • 2012-03-14
              • 1970-01-01
              相关资源
              最近更新 更多