未在片段中初始化选项菜单

时间:2018-11-06 12:07:33

标签: java android android-fragments

我有一个框架,在其中放置了不同的片段。有些显示了操作栏,有些则没有。但是下面给出的那个不会显示其他任何操作栏。

public class AFragment extends Fragment {

View view;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_a, container, false);
    ButterKnife.bind(this, view);
    setHasOptionsMenu(true);
    return view;
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.action_a) {
        //getFragmentManager().popBackStackImmediate();
    }
    return super.onOptionsItemSelected(item);
}

}

此片段是从之前的片段中调用的,例如

AFragment aFragment = new AFragment ();
getFragmentManager().beginTransaction()
                            .replace(R.id.fragment, aFragment , "fragment_a")
                            .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
                            .addToBackStack(null)
                            .commit();

顺便说一句,我没有在上一个片段中显示操作栏。

如果需要,请输入styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppActionBar" parent="AppTheme">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="windowActionBarOverlay">true</item>
</style>

1 个答案:

答案 0 :(得分:0)

对于片段,您必须确保在part方法和现在的setHasOptionsMenu()方法中设置了onCreate()

然后确保将工具栏(如果添加到片段布局中)设置为活动的工具栏。

onCreateView()