在条件操作(if 语句)中使用 Spinner 中的选定项目
Use selected item from Spinner in conditional Operation (if statement)
拜托,我有两个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()
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 你可以阅读 ==
和 equals()
之间的区别 java.
==
不利于比较字符串(实际上是任何对象,除非您知道它们是规范的)。 ==
只是比较对象引用。 .equals()
测试是否相等。对于字符串,它们通常是相同的,但不能保证总是相同。
The ==
operator checks if the two strings are exactly the same object.
The .equals()
method check if the two strings have the same value.
拜托,我有两个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()
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 你可以阅读 ==
和 equals()
之间的区别 java.
==
不利于比较字符串(实际上是任何对象,除非您知道它们是规范的)。 ==
只是比较对象引用。 .equals()
测试是否相等。对于字符串,它们通常是相同的,但不能保证总是相同。
The
==
operator checks if the two strings are exactly the same object.The
.equals()
method check if the two strings have the same value.