在条件操作中使用Spinner中的选定项(if语句)

时间:2017-10-10 09:29:53

标签: android spinner onitemclick

请,我有两个spinners。我正在尝试从string获取spinnerA值,然后将这些值用作显示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) {}

    });

2 个答案:

答案 0 :(得分:0)

请尝试将此==更改为

中的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个对象名称是否基本上引用了相同的内存位置。

比较2 equals()个对象的 String 方法,只要characters的实际序列相等,两个对象都被视为{{1 }}

Here您可以在java中阅读 equal == 之间的区别。

答案 1 :(得分:0)

==不适合比较字符串(任何对象,除非你知道它们是规范的)。 .equals()只是比较对象引用。 ==测试平等。对于字符串,它们通常是相同的,但不能保证始终。

  

.equals()运算符检查两个字符串是否完全相同。

     

ReactDOM.render(( <div> <Layout> <Sider> <SideMenu /> </Sider> <Layout> <Header /> <Content style={{ margin: '0 16px' }}> <div className='appWrap'> <BrowserRouter> <LocaleProvider locale={enUS}> <App /> </LocaleProvider> </BrowserRouter> <Footer /> </div> </Content> </Layout> </Layout> </div> ), document.getElementById('root')); 方法检查两个字符串是否具有相同的值。