完全跳过Java switch语句

时间:2014-02-18 23:24:30

标签: java android switch-statement android-resources typed-arrays

我正在尝试使用switch语句来动态确定正在选择操作栏下拉式微调器的哪个部分。这个switch语句甚至没有转到我default的情况,我做错了什么?

public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    // TODO Auto-generated method stub

    //restart fragment with selected spinner item's api call
    TypedArray mArray = getResources().obtainTypedArray(R.array.spinner_actionbar);
    switch(mArray.getResourceId(itemPosition, 0)){
    case R.string.spinner_timeline:
        break;
    case R.string.spinner_profile:
        break;
    case R.string.spinner_top_posts:
        break;
    case 0:
        break;
    default:
        break;
    }
    mArray.recycle();
    return false;
}

mArray.getResourceId(itemPosition, 0)返回一个arraylist OR 0的位置,我的所有情况都不会被调用

感谢您的任何见解,这是使用Android框架

3 个答案:

答案 0 :(得分:1)

switch-case区块中有空案例。除了case之外,你想在每个break内做一些事情。例如:

case R.string.spinner_timeline:
    System.out.println(R.string.spinner_timeline);
    break;
case R.string.spinner_profile:
    System.out.println(R.string.spinner_profile);
    break;
case R.string.spinner_top_posts:
    System.out.println(R.string.spinner_top_posts);
    break;
case 0:
    break;
default:
    System.out.println("default case...");
    break;

答案 1 :(得分:0)

您的代码可能会触发两种情况:

案例0和默认

这两个都是破解所以你不知道哪个被触发了。

R.ids最不可能是位置ID

答案 2 :(得分:0)

这里使用switch语句而不使用为什么以及何时使用switch语句。

当您需要根据整数,字符或字符串变量的值选择多个备选项之一时,switch语句很有用。 switch语句的基本形式是:

switch (expression)
{ 
  case constant:
        statements;
        break;
  [ case constant-2:
        statements;
        break;  ] ...
  [ default:
        statements;
        break;  ] ...
}

在您的情况下,您正在使用开关而不知道在输入开关盒时要执行的操作。输入后,您将使用break语句离开案例。你也在默认情况下做同样的事情。

您应该参考的参考链接:

Java Switch-case

http://www.dummies.com/how-to/content/switch-statements-in-java.html

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html