当前位置: 代码迷 >> Android >> Android Spinner验证
  详细解决方案

Android Spinner验证

热度:85   发布时间:2023-08-04 12:31:20.0

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

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

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

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

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

尝试这个

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

使用equals("Pick one")并在检查Java中 String类型的相等性时总是使用方法(除非您检查引用相等性),如下所示;

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

你的代码出了什么问题; 你正在使用==这导致检查Spinner1.getSelectedItem().toString()是否 "Pick one" ,因为“Pick one”是一个new String() 实例 ,它将始终为false

有关详情,请检查:

创建一个名为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;
    }

尝试这个..

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

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

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

只需使用它。

else if (Spinner1.getSelectedItem().toString().trim().equalsIgnoreCase("Pick one")) {
            Toast.makeText(CallWs.this, "Error",
                    Toast.LENGTH_SHORT).show();
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;
}
  相关解决方案