操作栏不显示项目

Action bar doesn't show items

我正在开发一个支持 API-9 的 android 应用程序,出现了带有应用程序名称的操作栏,但问题是项目没有出现 这是菜单文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- http://schemas.android.com/apk/lib/com.fakher.actualitefoot -->
    <!-- Settings -->
    <item
        android:id="@+id/action_refresh"
        android:icon="@drawable/ic_action_settings"
        android:title="@string/action_settings"
        app:showAsAction="never|withText" />

    <!-- Check updates -->
    <item
        android:id="@+id/action_check_updates"
        android:icon="@drawable/ic_action_refresh"
        android:title="@string/action_check_updates"
        app:showAsAction="never|withText" />

</menu>

主要class:

public class MainActivity extends FragmentActivity {

    private final Handler handler = new Handler();
    private PagerSlidingTabStrip tabs;
    private ViewPager pager;
    private PagerAdapter adapter;
    private AdView adView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ....
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    private Drawable.Callback drawableCallback = new Drawable.Callback() {
        @Override
        public void invalidateDrawable(Drawable who) {
            getActionBar().setBackgroundDrawable(who);
        }

        @Override
        public void scheduleDrawable(Drawable who, Runnable what, long when) {
            handler.postAtTime(what, when);
        }

        @Override
        public void unscheduleDrawable(Drawable who, Runnable what) {
            handler.removeCallbacks(what);
        }
    };

    @Override
    public void onPause() {
        adView.pause();
        super.onPause();
    }

    @Override
    public void onResume() {
        super.onResume();
        adView.resume();
    }

    @Override
    public void onDestroy() {
        adView.destroy();
        super.onDestroy();
    }

}

stykes.xml :

<resources>

    <style name="AppBaseTheme" parent="android:Theme.Light"></style>

    <style name="AppTheme" parent="AppBaseTheme">

        <item name="android:windowBackground">@color/background_window</item>
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>
    </style>

    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
        <!--<item name="android:icon">@drawable/ic_launcher</item>-->
        <item name="android:background">#ff127d08</item>
    </style>

</resources>

我希望操作栏显示包含在菜单文件中声明的项目的菜单 谢谢 :)

对我来说突出的是你有- app:showAsAction="never|withText", "never" 参数将阻止该项目出现。我觉得应该改成:

app:showAsAction="ifRoom" 

或:

app:showAsAction="always"

"withText" 也可能搞砸了。我是 android 编程新手,所以我可能是错的。但检查一下,让我知道它是否有效。而且,我看不到所有代码,但是您是否导入了 android.support.v7.app.ActionBar(因为该应用程序适用于 API 9)?没有它也无法运行。

您似乎在尝试使用 appcompat-v7 操作栏向后移植。如果是这种情况,您必须继承 AppCompatActivity(或其前身 ActionBarActivity),而不是 FragmentActivity。由于 AppCompatActivityActionBarActivity 本身扩展了 FragmentActivity,您不会失去任何与片段相关的功能。

还有:

  • 将所有 getActionBar() 调用更改为 getSupportActionBar()

  • 确保您的主题继承自 Theme.AppCompat(或继承自 Theme.AppCompat

  • 的其他主题)