-2

アクションバー メニュー項目の 1 つのタイトルを変更しようとしています。ユーザーがログインしていないときは、通常のタイトルであるログインと表示されますが、ユーザーがログインしたら、ログアウトに変更したいと思います。私が今持っているのは、それが機能するかどうかをテストすることだけでしたが、タイトルを変更するコードで実行するとクラッシュします。

コードは次のとおりです。

public MenuItem logout;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        background = findViewById(R.id.status);
        status = findViewById(R.id.image); 
        logout = (MenuItem) findViewById(R.id.menu_login);
        logout.setTitle("Blah");
        new CheckStatusTask().execute();
    }
4

2 に答える 2

3

MenuItemがビュー階層に存在しないため、クラッシュしています。メニューが作成または表示されたときにのみレンダリングされます。は、メニューが最初に表示されたときに一度呼び出され、メニューが表示さonCreateOptionsMenuれるOnPrepareOptionsMenuたびに呼び出されます。onCreateOptionsMenuOnPrepareOptionsMenu

これらの関数内で、メニュー項目を見つけることができます

logout = (MenuItem) menu.findViewById(R.id.menu_login);
于 2013-01-26T02:08:03.533 に答える
-2

これを修正する方法を見つけました。私がしたことは、2 つのメニュー xml ファイルを作成し、onCreateOptionsMenu に if ステートメントを配置して、ユーザーがログインしているかどうかを確認し、それに合わせて正しいメニューを選択することでした。

于 2013-01-29T03:57:07.337 に答える