2010-12-21 110 views
5

我想讓我的病例陳述打開一個不同的類,具體取決於按下哪個按鈕。我得到這個工作正常的一個按鈕,但我不確定如何進行兩個按鈕。Android病例聲明幫助

繼承人到目前爲止我的代碼:

public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.about_button: 
     Intent i = new Intent(this, About.class); 
     startActivity(i); 
     break; 
    case R.id.reminderList_button: 
     Intent i = new Intent (this, ReminderListActivity.class); 
     startActivity(i); 
     break; 

    } 

} 

這是因爲我重用本地變量(i)給出了一個錯誤 - 如果有人可以讓我知道如何做到這一點正確,將不勝感激。

回答

3

您可以在switch語句之前聲明變量i。如果您打算在開關語句後使用變量i,那麼這更適用於「範圍」:

public void onClick(View v) { 
    Intent i = null; 
    switch (v.getId()) { 
    case R.id.about_button: 
     i = new Intent(this, About.class); 
     break; 
    case R.id.reminderList_button: 
     i = new Intent (this, ReminderListActivity.class); 
     break; 
    } 
    startActivity(i); 
    ...; // other statements using `i' 
} 
+0

任何理由爲什麼這比方案範圍更好?只是更清潔,更少的代碼? – user319940 2010-12-21 00:32:46

+0

@ user319940是的,正如我所說的:如果你想在後面的switch語句後面使用變量'i',那麼如果你在switch語句中使得'i'在作用域內是本地的,你將無法做到這一點。無論如何,如果你在switch語句之後移出'startActivity(i)',你的重複代碼也會減少。 :) – 2010-12-21 00:36:10

+2

更容易出錯,如果你不處理默認情況。一定要初始化並檢查我,至少。 – EboMike 2010-12-21 00:37:27

1

適用範圍。

public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.about_button: 
     { 
      Intent i = new Intent(this, About.class); 
      startActivity(i); 
      break; 
     } 
    case R.id.reminderList_button: 
     { 
      Intent i = new Intent (this, ReminderListActivity.class); 
      startActivity(i); 
      break; 
     } 
    } 
} 
+0

好極了!似乎是我正在尋找的:D – user319940 2010-12-21 00:20:30

+0

恕我直言:在這一點上,它會更易於創建方法startAboutActivity(),startReminderListActivity()...等 – cyroxis 2015-06-02 11:35:29