1

我已经login在操作项上设置了,如下图所示。每当用户点击登录时,login screen都会显示。每当用户输入凭据并登录时,我都会完成 loginActivity 并将其重定向到其他屏幕,此外,我还将使用name of the user操作栏上的登录替换。

  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;
    }

在此处输入图像描述

4

1 回答 1

0

如果您invalidateOptionsMenu()想“刷新”您的电话optionsMenu,那应该可以解决问题。invalidateOptionsMenu() 开始调用onCreateOptionsMenu层次结构中正在播放的每个菜单。

于 2013-04-03T18:12:08.510 回答