2017-05-22 160 views
0

好吧,所以我有一个小问题,我真的不知道如何解决这个问题。安卓操作栏选项菜单显示问题

所以我要在这里我用我自己的风格时显示的操作栏

<resources> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
     <item name="windowActionModeOverlay">true</item> 
     <item name="actionBarStyle">@style/AppTheme.ActionBar</item> 
     <item name="android:textColorSecondary">@color/action_bar_bg</item> 
    </style> 

    <style name="AppTheme.ActionBar" parent="Widget.AppCompat.ActionBar"> 
     <item name="height">30dp</item> 
     <item name="background">@color/action_bar_bg</item> 
    </style> 
</resources> 

菜单应用

<?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" > 

    <item android:id="@+id/sortByStatus" 
     android:title="@string/sort_by_status" 
     app:showAsAction="never" /> 

    <item android:id="@+id/sortByName" 
     android:title="@string/sort_by_name" 
     app:showAsAction="never" /> 

    <item android:id="@+id/sortByCompany" 
     android:title="@string/sort_by_company" 
     app:showAsAction="never" /> 
</menu> 

这对几乎所有的地方,伟大工程除了当我尝试显示我的选项菜单。我已经添加了选项菜单和处理程序,但是当我点击选项菜单时,默认顶部图标(来自通知栏)也显示在我的选项菜单中,我不希望那些显示在那里。它也开始显示索尼手机的默认底部导航按钮。

example of the problem1 example of the problem2

从的onResume

启用菜单
@Override 
public void onResume() { 
    super.onResume(); 

    AppCompatActivity appCompatActivity = (AppCompatActivity) getActivity(); 
    if (appCompatActivity != null && appCompatActivity.getSupportActionBar() != null) 
     appCompatActivity.getSupportActionBar().setTitle(getResources().getString(R.string.presense_status)); 

    setHasOptionsMenu(true); 
    ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

,然后选择菜单的onCreate

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

,然后将处理程序选定项目

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      getActivity().getFragmentManager().popBackStackImmediate(); 
      break; 

     case R.id.sortByStatus: 
      if (null != mDataSource) { 
       // update data list 
       reloadData(); 
      } 
      break; 

     case R.id.sortByName: 
      if (null != mDataSource) { 
       // update data list 
       reloadData(); 
      } 
      break; 

     case R.id.sortByCompany: 
      if (null != mDataSource) { 
       // update data list 
       reloadData(); 
      } 
      break; 

     default: 
      super.onOptionsItemSelected(item); 
    } 

    return true; 
} 

我真的不知道问题来自哪里或如何删除它,以免发生这种情况。这发生在由我的主Activity启动的Fragment内,这意味着我只有一个Activity为不同的应用内任务生成不同的片段。 任何帮助或想法将不胜感激。

回答

1

我仍然不知道为什么通知栏受到我所做的影响,但在此视图中强制应用程序全屏会停止问题,所以我想这是一个可以接受的解决方法。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
}