Android应用开发基础(避坑)------OptionMenu无法显示问题

随着Android的技术深入,很多组件会因为很少人使用会被淘汰,也有一些保留着藏着坑的一些组件,由于课堂学习的需要,我们又不得不去接触到这些组件,今天就来谈一谈OptionMenu。

OptionMenu是选项菜单,选项菜单可以内嵌子菜单使用。

 

  • 遇到的坑与解决思路

在开发中,写Activity时,我习惯于让控制界面显示的类继承于Activity,发现菜单无法显示,一度以为是SDK版本过新,或者是虚拟器版本已淘汰选项菜单,通过调低这些开发环境都没能够显示出来。

(无法显示)

最后,我通过让界面显示类继承AppCompatActivity实现了显示,现在的选项菜单会默认在右上角显示,而旧版本出现在底部。

  • 实现效果:

 

(正常显示)

总结:在实验中,你会发现onCreateOptionsMenu方法和onOptionsItemSelected方法都是AppCompatActivity和Activity类中存在的,但是在页面创建时,AppCompatActivity会默认调用该方法,而Activity则不会。

 

  • 关于OptionMenu完整功能实现实例

OptionMenuActivity类

package com.example.applicationfi.lab5;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import com.example.applicationfi.R;
public class OptionMenuActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_context_menu);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater=new MenuInflater(ContextMenuActivity.this);
        menuInflater.inflate(R.menu.subcontext,menu);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.boy0:
            case R.id.boy1:
                setTitle("您选择的男歌手:"+item.getTitle());
                break;
            case R.id.girl0:
            case R.id.girl1:
                setTitle("您选择的女歌手:"+item.getTitle());
                break;
            case R.id.group0:
            case R.id.group1:
                setTitle("您选择的组合:"+item.getTitle());
                break;
                default:
                    break;
        }
        return super.onOptionsItemSelected(item);
    }
}

subcontext.xml存放OptionMenu数据

<?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" android:icon="@drawable/person_add">
    <item android:id="@+id/boys" android:title="男歌手" android:orderInCategory="100" android:icon="@drawable/person_add"
        >
        <menu>
            <item android:id="@+id/boy0"  android:title="TFBOYS"/>
            <item android:title="BEYOND" android:id="@+id/boy1"/>
        </menu>
    </item>
    <item android:id="@+id/girls" android:title="女歌手" android:orderInCategory="100" android:icon="@drawable/person_add">
        <menu>
            <item android:id="@+id/girl0" android:title="谭维维"/>
            <item android:title="王菲" android:id="@+id/girl1"/>
        </menu>
    </item>
    <item android:id="@+id/group" android:title="组合" android:orderInCategory="100" android:icon="@drawable/person_add">
        <menu>
            <item android:id="@+id/group0" android:title="唐朝乐队"/>
            <item android:title="苏打绿" android:id="@+id/group1"/>
        </menu>
    </item>
</menu>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章