在Android应用中,我使用菜单进行活动
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/logout"
android:title="Logout" />
<item
android:id="@+id/compose"
android:title="Compose" />
<item
android:id="@+id/refresh"
android:title="Refresh" />
</menu>
和活动:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.inboxmenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.logout:
SharedPreferences settings =getSharedPreferences("CASPreferences", MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putString("uid", "");
prefEditor.putString("stdno", "");
prefEditor.putString("firstname", "");
prefEditor.putString("lastname", "");
prefEditor.putString("lastname", "");
prefEditor.commit();
Intent myIntent = new Intent(this, LoginActivity.class);
startActivity(myIntent);
return true;
case R.id.refresh:
Log.e("menu" , "refresh");
//Intent intent=new Intent(this,MainActivity.class);
startActivity(getIntent());
finish();
case R.id.compose:
Log.e("menu" , "compose");
Intent intent1=new Intent(this,ComposeActivity.class);
startActivity(intent1);
default:
return super.onOptionsItemSelected(item);
}
}
但是当我点击刷新按钮时,它会去撰写活动!就像你点击撰写一样。
为什么会这样?
答案 0 :(得分:1)
将break
添加到您的switch语句中,否则您的代码将继续进入第三种情况
答案 1 :(得分:1)
您没有为每个交换机stmt添加 break; 。 请尝试分享结果。
答案 2 :(得分:0)
重写您的switch
声明。
switch (item.getItemId()) {
case R.id.logout:
...
return true;
case R.id.refresh:
...
finish();
break; // <- Add this line
case R.id.compose:
...
break; // <- Add this line
default:
return super.onOptionsItemSelected(item);
}
每个case
块必须由break
括起来。
第一个break语句是必要的,因为如果没有它们,switch块中的语句就会失败:匹配的case标签之后的所有语句都按顺序执行,而不管后续case标签的表达式,直到遇到break语句。
break
块中不需要 case
,因为流被return
语句中断。
参考:http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html