在条件操作(if语句)中使用从Spinner中选择的项目
请,我有两个spinners
。我试图从spinnerA
获取string
值,然后将这些值用作显示spinnerB
的其他值的条件。我从数据库(mySql)获取这些值。 部分代码如下。语法是正确的(Android Studio不显示任何错误),但没有发生,当我在模拟器上运行我的意思是,Toast
不显示。在条件操作(if语句)中使用从Spinner中选择的项目
任何想法的问题或最简单的方法做的请吗?
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()
在
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个对象,它检查对象是否指向内存中的相同位置。换句话说,它会检查2个对象名是否基本上是对同一个内存位置的引用。
和
的equals()
方法来比较2个String
对象,那么只要characters
实际序列是相等的,这两个对象都被认为equal
Here你可以读的是什么区别在==
和equals()
in java。
完美的作品!非常感谢你的回答和解释,这很有道理。 – Mary
很高兴它的作品请接受这个答案,如果有帮助@ user3805411 – UltimateDevil
==
不利于比较字符串(任何对象真的,除非你知道它们是规范的)。 ==
只是比较对象引用。 .equals()
测试是否相等。对于字符串,它们通常是相同的,但始终不能保证。
==
运算符检查两个字符串是否完全相同的对象。
.equals()
方法检查两个字符串是否具有相同的值。
它的工作原理,谢谢你! – Mary
你不能使用==比较字符串使用.equals()方法! –