2013-09-23 48 views
0

我正在一個Android應用程序。我在第一次活動中有一個字符串。我使用intent.putExtra()將該字符串傳遞給我在第一個活動中開始的第二個活動。以下是活動代碼相關部分:雖然連續性是真的,但代碼並沒有輸入,如果語句

第一個活動

final ListView lv = (ListView) findViewById(R.id.listView1); 
     lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 
     String selectedFromList = (lv.getItemAtPosition(arg2).toString()); 

     Intent content_umre_Intent = new Intent("com.uygulama.hacc.ContentActivity"); 
     content_umre_Intent.putExtra("key", selectedFromList); 
     startActivity(content_umre_Intent); 
    } 
}); 

次活動

Context context = getApplicationContext();      
int duration = Toast.LENGTH_SHORT; 

Toast toast = Toast.makeText(context, text, duration); 
String text = getIntent().getStringExtra("key").toString(); 

if(text=="abc"){ 
    toast.show(); 
} 

這裏有一些古董。我把toast.show()放在if語句之外,我看到它等於「abc」。

但即使變量text完全等於「abc」,它也不會輸入if語句。

你知道爲什麼會發生這種情況嗎?我找不到任何理由。我現在真的需要幫助。

任何幫助,將不勝感激。

+0

如果(text.equals(「ABC」)) –

回答

2

沒有什麼太奇怪的......改變

if(text=="abc"){ 

if("abc".equals(text)){ 

當比較Strings==如果它們引用同一個對象會比較。如果它們具有相同的值,則需要.equals()進行比較。

你可以做到這一點作爲

if(text.equals("abc")){ 

,但我張貼的第一種方式將防止出現NPE

題外話

爲什麼你有一個StringtoString()

String text = getIntent().getStringExtra("key").toString(); 

另外,如果你是Activity的內部,而不是內部的內部類或監聽器,那麼你可以使用thisContext,而不是創建一個變量。它可能不會傷害任何東西,但取決於你使用的是什麼Context因爲它可能會導致問題,因爲你正在使用Application Context而不是Activity Context ......請注意。

+0

我不知道。非常感謝你的工作。我試圖讓它工作,我沒有任何理由地添加它:)我會在5分鐘內接受你的答案 – user2870

+0

好吧,對我來說似乎合理;)很高興它的工作 – codeMagic

1

嘗試

if(text.equals("abc")){ 
    toast.show(); 
} 
0

==測試參考平等。

。equals()方法試驗值相等

它一個它與的java字符串比較等於

if(text.equals("abc")){ 
    toast.show(); 
} 

但我會建議

if("abc".equals(text)){ 
    toast.show(); 
} 

,因爲如果文本爲空先將拋出異常但秒不會自動處理.equals(object)

,你也可以做到這一點,如果你不操心的情況下

"abc".equalsIgnoreCase(text) 
+0

這是真的,如果問題類'重寫了它的'equals()'來測試那個'Class'的特定值。由程序員決定'equals()'的比較。默認情況下'equals()'和'=='是等價的;它們都檢查內存引用是否相等。 – Emmanuel