1

私のアプリケーションは、起動時に Web サービスを呼び出して、ユーザーがログインしているかどうかを確認します。ログインしている場合は、ログアウト アイコンを表示する必要があります。ログインしていない場合は、ログイン アイコンを表示する必要があります。アプリケーションのバージョンがログインをサポートしていない場合は、引き続きアイコンを表示しない必要があります。

Web サービスが戻ったときにアイコンを表示するにはどうすればよいですか? 2.3 を使用しているため、invalidateOptionsMenu() を呼び出すことができません。また、onPrepareOptionsMenu() に追加しようとすると、ActionBar ではなくメニュー ボタンを押したときにメニューに表示されます。

4

2 に答える 2

1

私はこのように似たようなことをしました:

アクションバーメニューには、ログイン項目とログアウト項目の両方が既に存在します (項目に ID を簡単に割り当てることができるように、コードで作成するのではなく、xml に配置することをお勧めします)。次に、作成時にメニューへの参照を保持して、後で変更できるようにします。

Menu myActionBarMenu;

/**
 * Creates action bar items.
 */
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menuNameHere, menu);
    myActionBarMenu = menu;
}

次に、ユーザーがログインしていることがわかったら、次のようにログイン項目の可視性を false に設定します。

myActionBarMenu.findItem(R.id.logInAction).setVisible(false);
myActionBarMenu.findItem(R.id.logOutAction).setVisible(true);

ユーザーがログアウトしている場合の可視性を反転します。

xml メニューは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/logInAction"
        android:showAsAction="ifRoom"
        android:title="Log In"/>
    <item
        android:id="@+id/logOutAction"
        android:showAsAction="ifRoom"
        android:title="Log Out"/>
</menu>
于 2012-04-18T15:42:24.537 に答える
0

このコードを使用して、ActionBar にメニュー項目を追加します。

/*************************************/
/* Create the actionbar options menu */
/*************************************/
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    menu.add("Settings")
            .setIcon(R.drawable.ic_menu_moreoverflow_normal_holo_light)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    return true;
}

そこにifステートメントを追加して、それに応じてアイコンを変更できるはずです

于 2012-03-26T19:40:51.597 に答える