【问题标题】:Use selected item from Spinner in conditional Operation (if statement) [duplicate]在条件操作中使用 Spinner 中的选定项目(if 语句)[重复]
【发布时间】:2018-03-21 15:43:33
【问题描述】:

拜托,我有两个spinners。我试图从spinnerA 获取string 值,然后使用这些值作为显示spinnerB 的其他值的条件。我从数据库(mySql)中获取这些值。 部分代码如下。语法是正确的(Android Studio 没有显示任何错误),但是当我在模拟器上运行它时没有任何反应,我的意思是,Toast 没有显示。

您知道这个问题或最简单的方法吗?

PS : 这里的Toast 只是为了检查值是否被存储。

public class ReviewActivity extends AppCompatActivity {

Spinner sp1, sp2;
TextView companyName;
Toolbar toolbar;

ArrayList<String> trajets = new ArrayList<String>();
ArrayList<String> horaires = new ArrayList<String>();

ArrayAdapter<String> adapter1, adapter2;

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

    sp1 = (Spinner) findViewById(R.id.spinner_trajet);
    sp2 = (Spinner) findViewById(R.id.spinner_horaire);

    adapter1=new ArrayAdapter<String>(this,R.layout.travel_spinner_layout,R.id.txt,trajets);
    sp1.setAdapter(adapter1);

    sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View arg1, int arg2, long arg3) {
               String travel = sp1.getSelectedItem().toString();
               if (travel == "NY - CA") {
                    Toast.makeText(ReviewActivity.this, "Yaounde - Douala", Toast.LENGTH_LONG).show();
                } else if (travel == "CA - NY") {
                    Toast.makeText(ReviewActivity.this, "Douala - Yaounde", Toast.LENGTH_LONG).show();
                }
            }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {}

    });

【问题讨论】:

  • 你不能使用 == 比较字符串使用 .equals() 方法!!

标签: android spinner onitemclick


【解决方案1】:

试试,这把你的==改成equals()

itemSelectedListener

请参阅下面的更改-:

String travel = sp1.getSelectedItem().toString();
           if (travel.equals("NY - CA")) {
                Toast.makeText(ReviewActivity.this, "Yaounde - Douala", Toast.LENGTH_LONG).show();
            } else if (travel.equals("CA - NY")) {
                Toast.makeText(ReviewActivity.this, "Douala - Yaounde", Toast.LENGTH_LONG).show();
            }

==”运算符用于比较两个对象,它检查对象是否引用内存中的同一位置。换句话说,它会检查这 2 个对象名称是否基本上是对同一内存位置的引用。

equals()方法比较2个String对象,那么只要characters的实际顺序相等,两个对象都被认为是equal

Here 你可以阅读 java 中 ==equals() 之间的区别。

【讨论】:

  • 完美运行!非常感谢您的回答和解释,很有道理。
  • 很高兴它可以工作,如果有帮助请接受这个答案@user3805411
【解决方案2】:

== 不适合比较字符串(实际上是任何对象,除非您知道它们是规范的)。 == 只是比较对象引用。 .equals() 测试是否相等。对于字符串,它们通常是相同的,但并不总是保证。

== 运算符检查两个字符串是否完全相同。

.equals() 方法检查两个字符串是否具有相同的值。

【讨论】:

  • 成功了,谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 2022-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多