2013-01-07 56 views
1

我已經在操作項目上設置了login,如下圖所示。無論何時用戶點擊登錄,將顯示login screen。無論何時用戶輸入憑證並登錄,我正在完成loginActivity並將其重定向到其他屏幕,除此之外,我還將使用操作欄上的name of the user替換登錄名。調用actionBarsherlock的onCreateOptionsMenu()

  1. 每當用戶點擊後退按鈕,又回到主頁,顯示再次login,但操作欄上沒有username。那麼,我該如何改變這一點。

  2. 只要他的用戶名用戶點擊一個下拉列表顯示在註銷選項是存在的。無論何時用戶點擊註銷選項,我想用登錄選項更新操作欄,但它仍顯示用戶名。

有人能幫我解決這兩個問題嗎?代碼片斷表示讚賞。

public abstract class HomeActivity extends SherlockActivity { 
    protected static boolean mIsLoginButton = false; 
    protected static String user_name = ""; 
    protected static boolean mIsUserLoggedIn = false; 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     if(mIsLoginButton) 
     { 
      menu.add("Login") 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 
     } 

     else if(mIsUserLoggedIn) 
     { 


       SubMenu subMenu1 = menu.addSubMenu(user_name); 

       subMenu1.add(0, 3 , 0, "Log out"); 

       MenuItem subMenu1Item = subMenu1.getItem(); 

       subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

       getSupportActionBar().setDisplayShowTitleEnabled(false); 

     } 

     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     switch(item.getItemId()) 
     { 

     case 0: 
      if(mIsLoginButton) 
      { 
      Intent intent = new Intent(HomeActivity.this,LoginActivity.class); 
      startActivity(intent); 
      } 

      return true; 


     case 3: 
      Toast.makeText(getApplicationContext(), "clicked on logout", Toast.LENGTH_SHORT).show(); // Case 3 which is logout condition. So what should I do here to update the current activity. 

      LogManager.logoutUser(); 

      return true; 
     } 
     return false; 
    } 

enter image description here

回答

0

如果你打電話invalidateOptionsMenu(),只要你想 「刷新」 你optionsMenu應該做的伎倆。 invalidateOptionsMenu()開始爲層次結構中正在播放的每個菜單調用onCreateOptionsMenu

相關問題