Spinners,拦截并检查默认值

Spinners, intercept and check the default value

大家好我一直在尝试检索两个微调器的值并根据所选项目的值进行简单操作。

我已经设法检索到该值并将其打印在 Toast 消息中。 问题是,一旦我启动应用程序,Toa​​st 消息中就会显示默认值 "Select Team"。

为了避免这种情况,我尝试拦截该值并仅当它与 "Select Team" 不同时才打印 toast 消息,但它似乎不起作用。 "if" 语句被完全忽略。

这是代码,考虑到我是 Java 和 Android 编程的新手,我希望收到对可能改进的代码其他部分的评论。

public class MainActivity extends AppCompatActivity {
Spinner sp_home;
Spinner sp_away;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    sp_home = (Spinner) findViewById(R.id.spinner_home_team);
    sp_away = (Spinner) findViewById(R.id.spinner_away_team);


    sp_home.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                                   int arg2, long arg3) {
            if (sp_home.getSelectedItem().toString() != "Select Team") {
                Toast.makeText(getBaseContext(), sp_home.getSelectedItem().toString(),
                        Toast.LENGTH_LONG).show();
            }
        }

        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    });

    sp_away.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                                   int arg2, long arg3) {
            if (sp_away.getSelectedItem().toString() != "Select Team") {
                Toast.makeText(getBaseContext(), sp_away.getSelectedItem().toString(),
                        Toast.LENGTH_LONG).show();
            }
        }

        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    });

}



}

感谢大家

使用 .equals() 比较字符串,而不是 == 或 !=。 .equals() 检查每个索引处的字符。 == 只检查引用的相等性,这几乎不会起作用。

要比较 Android 中的字符串,您必须使用 "equals"

if (!sp_home.getSelectedItem().toString().equals ("Select Team")) {
            Toast.makeText(getBaseContext(), 
            sp_home.getSelectedItem().toString(),
                    Toast.LENGTH_LONG).show();
        }

这条线路有问题

if (sp_away.getSelectedItem().toString() != "Select Team") {

因为在 Java 中:

  • == -> 是引用比较,即两个对象指向相同的内存位置
  • .equals() -> 评估对象中值的比较

因此,在比较字符串值时始终使用等于而不是 == 或 !=