我正在尝试使用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框架
答案 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