2017-10-10 8 views
-4

私は2つの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) {} 

    }); 
+2

== use .equals()メソッドを使用して文字列を比較することはできません! –

答えて

0

てみてください、これは

itemSelectedListener

であなたの==equals()にを変更するには、以下の変更を確認 - :「==」演算子をするために使用される

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つのオブジェクト名が基本的に同じメモリ位置を参照しているかどうかを確認します。

もし差が何であるかを読み取ることができ、その後限りcharactersの実際の配列が同じであるように、両方のオブジェクトがequal

Hereと考えられる2つのStringオブジェクトを比較するequals()方法==equals()(java)

+0

完璧に動作します!あなたの答えと説明に感謝します。 – Mary

+0

うれしいことがあればうまくいけばこの回答を受け入れてください@ user3805411 – UltimateDevil

0

==は、文字列(実際には、正規の文字列でないとわからない限り)を比較すると悪いです。 ==はオブジェクト参照を比較するだけです。 .equals()が等しいかどうかをテストします。文字列の場合、それらはしばしば同じですが、常に保証されるわけではありません。

==オペレータは、2つの文字列がまったく同じオブジェクトであるかどうかをチェックします。

.equals()メソッドは、2つの文字列が同じ値を持つかどうかをチェックします。

+0

それは、ありがとうございます! – Mary

関連する問題