24

いくつかのフラグメントを示すアクティビティがあります。アクティビティ ビューには、カスタム FragmentPagerAdapter で初期化された ViewPager のみが含まれます。このアダプターは、3 つのフラグメント間のナビゲーションを提供します。

アクションバーを除いて、すべて正常に動作しているようです。

フラグメントの onCreateOptionsMenu() メソッドをオーバーライドして、任意のフラグメントに対して個別のアクション バーを作成します。

    @オーバーライド
    public void onCreateOptionsMenu(メニュー メニュー、MenuInflater インフレータ)
    {
        super.onCreateOptionsMenu(メニュー、インフレータ);
        menu.clear();

//fragment specific menu creation }

スワイプすると新しいフラグメントが表示されますが、アクション バーは数秒間同じままです。おそらく数秒後にこのメソッドが呼び出され、アクション バーが変更されます。

これは、スワイプが終了してしばらくしてからアクション バーが変更されると、かなり見栄えが悪くなります。スワイプが始まる前に、アクションバーをすぐに再作成するにはどうすればよいですか?

4

4 に答える 4

26

呼び出して、自動的にアクションバーを再作成する前に、Android にアクションバーを再作成するように依頼できます。invalidateOptionsMenu();

フラグメントを変更するポイントの近くでこれを行い、フラグメントとアクションバーの変更の間の「ラグ」を減らしてみてください。

編集

完全なソリューションは次のようになります。

class activity extends Activity{

private void switchFragment(){

...do fragment changing stuff

activity.invalidateOptionsMenu();

}

}

class someFragment extends Fragment{

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();


    //fragment specific menu creation
}

}

実行中に開いているフラグメント

activity.invalidateOptionsMenu();

次に、それを呼び出します

 onCreateOptionsMenu

そこでフラグメント固有のメニュー作成を行うことができます

于 2013-01-23T13:14:15.713 に答える
2

ActionBar タブを使用している場合は、次の回答が必要です。

アクション バーのアクションを動的に変更するにはどうすればよいですか?

于 2014-08-31T15:43:47.070 に答える