2

アプリケーション内に ABS を実装しています。ユーザーが別のタブをスワイプ/選択できるようにする FragmentPagerAdapter があります。

これらの各タブには、異なるフラグメントが含まれています。基本的に、私の問題は、私がテストしているAndroid 2.3.6デバイスで、アクティビティが最初に呼び出されたときに、最初のタブフラグメントが想定されているメニューを膨張させないことです。ただし、別のタブにスワイプして戻ると、表示されます。

フラグメント内のコードは次のとおりです。

public void onPrepareOptionsMenu(Menu menu) {
    menu.clear();
    MenuInflater inflater = getSherlockActivity().getSupportMenuInflater();
    inflater.inflate(R.menu.menu_ongoing_fragment, menu);
}

一方、Android 4.2 デバイスでは完全に正常に動作します (アクティビティが最初に起動されたときにメニューが拡張されます)。これら 2 つのデバイスがメソッドを呼び出す順序と関係がありますか?

4

1 に答える 1

0

次の理由で機能していません。

menu.clear();

それを削除します。

フラグメントに次のコードが必要です。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setHasOptionsMenu(true);
};

「onPrepareOptionsMenu()」の代わりにこれを使用します。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_ongoing_fragment, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

これで問題が解決することを願っています!

于 2013-06-16T01:24:30.460 に答える