【问题标题】:Calling the onCreateOptionsMenu() for the actionbarsherlock为 actionbarsherlock 调用 onCreateOptionsMenu()
【发布时间】:2013-01-07 08:48:15
【问题描述】:

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

  1. 每当用户单击返回按钮时,它都会返回主页,该主页再次显示login,但不会在操作栏上显示username。那么,我该如何改变呢。

  2. 每当用户点击他的用户名时,都会显示一个下拉列表,其中有logout选项。每当用户点击注销选项时,我想用 login 选项更新操作栏,但它仍然显示用户名。

有人可以帮我解决这两个问题吗?代码 sn-ps 表示赞赏。

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

【问题讨论】:

    标签: android menu actionbarsherlock


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多