2012-11-23 34 views
0

我有一個活動(主),我插入一個按鈕。 當用戶按下按鈕時,會出現一個帶有2個無線電框的對話框。我想根據選擇哪個單選按鈕將「1」或「0」值設置爲「ntv」,然後在主活動中使用「ntv」值,但似乎不會將「ntv」值傳遞給主活動,我的代碼有什麼問題?如何將參數值從對話框傳送到android中的活動?

 final CharSequence[] chan = {"Minutes", "Seconds"}; 
     builder = new AlertDialog.Builder(Main.this); 
     builder.setTitle("Please Select:"); 
     builder.setSingleChoiceItems(chan, 0, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 
       if(chan[item]=="Minutes") 
       { 
        Toast.makeText(getApplicationContext(), "Minutes", Toast.LENGTH_SHORT).show(); 
        ntv="1";  
       } 
       else if (chan[item]=="Seconds") 
       { 
        Toast.makeText(getApplicationContext(), "Seconds", Toast.LENGTH_SHORT).show(); 
        ntv="0"; 
       } 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 

我定義的 「NTV」 的字符串,這是代碼的一部分時 「NTV」 進行比較,判斷是否是 「0」 或 「1」

ImageView set1= (ImageView) findViewById(R.id.set1); 
      ImageView set2= (ImageView) findViewById(R.id.set2); 
    if (ntv.equals("0")) { 
     set1.setVisibility(View.INVISIBLE); 
    } 
      if (ntv.equals("1")) { 
     set2.setVisibility(View.INVISIBLE); 
    } 

並且因爲(set1)和(set2)都不會不可見,所以我意識到「ntv」沒有任何價值。

+0

你應該在字符串比較NOT'=='上做'.equals'。 – Doomsknight

+0

定義/聲明變量「ntv」的位置和方式?此外,請顯示您用來確定'ntv'是否設置爲「1」或「0」的代碼。 –

+0

@DavidWasser我編輯我的問題,並添加了代碼。 –

回答

1

這一切看起來OK(建議除了使用equals()而不是==對字符串進行比較,雖然,因爲你(這並不是很好的做法)

我能想到的唯一的事情是(沒有看到所有的代碼),變量ntv的範圍是錯誤的。方法?它需要被定義爲類中的一個實例變量(即:不是在方法內)。

+0

是的!你的建議是對的!我是用方法聲明的,現在我修好了,謝謝。:) –

1

你應該在字符串比較做.equals==

這是不可能的,你的if語句會觸發因爲這個原因。

  if(chan[item].equals("Minutes")) 
      { 
       Toast.makeText(getApplicationContext(), "Minutes", Toast.LENGTH_SHORT).show(); 
       ntv="1";  
      } 
      else if (chan[item].equals("Seconds")) 
      { 
       Toast.makeText(getApplicationContext(), "Seconds", Toast.LENGTH_SHORT).show(); 
       ntv="0"; 
      } 
+0

謝謝你的觀點,但吐司工作正常,這意味着字符串比較沒有問題,但是當我想要在主要活動中使用「ntv」值時,它不具有「0」或「1」值。 –

+0

也許您還將「0」或「1」與==相比,而不是等於。 – Ixx

+0

@Ixx是的,我正在使用==,但我將它改爲.equals,但仍然無效。 :( –

0

不清楚您使用的完整代碼以及如何調用改變可見性的代碼。下面的例子

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    AlertDialog.Builder builder; 

    final CharSequence[] chan = {"Minutes", "Seconds"}; 
    builder = new AlertDialog.Builder(MainActivity.this); 
    builder.setTitle("Please Select:"); 
    builder.setSingleChoiceItems(chan, 0, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 
      if(chan[item].equals("Minutes")) { 
       showToast("Minutes");  
      } else if (chan[item].equals("Seconds")) { 
       showToast("Seconds"); 
      } 
     } 
    }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

private void showToast(String s){ 
    Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show(); 
} 

,而不是showToast功能,您可以使用您的功能改變的知名度

相關問題