1

login下の画像のようにアクションアイテムにを設定しました。ユーザーがログインをクリックするたびに、login screenが表示されます。ユーザーがクレデンシャルを入力してログインするたびに、loginActivityを終了して他の画面にリダイレクトします。さらに、ログインをname of the userアクションバーのに置き換えます。

  1. ユーザーが[戻る]ボタンをクリックすると、ホームページに戻ります。ホームページは再び表示されますが、アクションバーには表示されloginません。usernameでは、どうすればこれを変更できますか。

  2. ユーザーが自分のユーザー名をクリックするたびに、ログアウトオプションが表示されるドロップダウンリストが表示されます。ユーザーがログアウトオプションをクリックするたびに、ログインオプションでアクションバーを更新したいのですが、それでもユーザー名が表示されます。

誰かが私がこれらの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 に答える