2017-10-10 123 views
-4

請,我有兩個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

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

回答

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個對象名是否基本上是對同一個內存位置的引用。

equals()方法來比較2個String對象,那麼只要characters實際序列是相等的,這兩個對象都被認爲equal

Here你可以讀的是什麼區別在==equals() in java。

+0

完美的作品!非常感謝你的回答和解釋,這很有道理。 – Mary

+0

很高興它的作品請接受這個答案,如果有幫助@ user3805411 – UltimateDevil

0

==不利於比較字符串(任何對象真的,除非你知道它們是規範的)。 ==只是比較對象引用。 .equals()測試是否相等。對於字符串,它們通常是相同的,但始終不能保證。

==運算符檢查兩個字符串是否完全相同的對象。

.equals()方法檢查兩個字符串是否具有相同的值。

+0

它的工作原理,謝謝你! – Mary