2011-09-13 54 views
0

,我用的菜單爲活動在Android的菜單並沒有在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

重寫您的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

+0

請注意'break'語句,特別是! – Dave

1

添加break到您的switch語句,否則你的代碼將持續到第三情況

1

您haven`t添加休息;爲每個開關stmt。 請嘗試分享結果。

相關問題