2010-12-21 107 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