ActionBar没有在Android KitKat 4.4.4

时间:2016-02-09 11:03:16

标签: android android-fragments android-actionbar

我正在Android中开发一个应用程序,我在片段中实现ActionBar时遇到问题。

这是我片段的代码:

public class TopicListFragment extends ListFragment {

private LinkedList<Topic> mTopics;
private static final String TAG = "TopicListFragment";

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

    mTopics = TopicLab.get(getActivity()).getTopics();

    ArrayAdapter<Topic> adapter =  new TopicAdapter(mTopics);

    setListAdapter(adapter);
}

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        Log.d(TAG, "Menu created");
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.fragment_topic_list, menu);
    }

这是meny布局的XML文件:

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

        <item android:id="@+id/menu_item_new_topic"
              android:icon="@android:drawable/ic_menu_add"
              android:title="@string/new_topic"
              app:showAsAction="ifRoom"></item>

    </menu>

当我运行应用程序时,ActionBar没有显示,如果我按下智能手机上的menù按钮,它会出现在一个只有标题的丑陋的botton线上。

正如你在Fragment类中看到的那样,我已经插入了一行调试,但它只在我按下menù按钮时打印消息,而不是在创建Activity时打印消息。

我该怎么做才能修复它?每个答案都将非常感谢!谢谢!

EDIT ----

如上所述,这是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>

</resources>

2 个答案:

答案 0 :(得分:0)

将此代码放在xml文件中

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

以下代码中包含片段的活动

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
    setSupportActionBar(toolbar);
}

以你的风格添加

<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>

答案 1 :(得分:0)

很久以后,如果您在使用旧版本的操作栏测试中遇到差距,这是一个安全选项:

final RelativeLayout mainLayout = view.findViewById(R.id.main_layout);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        Rect rectangle = new Rect();
        Window window = activity.getWindow();
        window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
        mainLayout.setPadding(0, rectangle.top, 0, 0);
    }