【问题标题】:Spinners, intercept and check the default valueSpinners,拦截并检查默认值
【发布时间】:2017-12-20 18:22:12
【问题描述】:

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

我已成功检索该值并将其打印在 Toast 消息中。 问题是,一旦我启动应用程序,默认值“选择团队”就会出现在 Toast 消息中。

为了避免这种情况,我尝试截取该值并仅在它与“选择团队”不同时才打印 toast 消息,但它似乎不起作用。 “if”语句被完全忽略。

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

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
        }
    });

}



}

谢谢大家

【问题讨论】:

    标签: android android-spinner


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        这条线有问题

        if (sp_away.getSelectedItem().toString() != "选择团队") {

        因为在 Java 中:

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

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

        【讨论】:

          猜你喜欢
          • 2022-09-23
          • 2015-09-03
          • 1970-01-01
          • 1970-01-01
          • 2011-09-04
          • 1970-01-01
          • 2013-10-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多