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

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

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

 

  • 遇到的坑与解决思路

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

Android应用开发基础(避坑)------OptionMenu无法显示问题_第1张图片

(无法显示)

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

  • 实现效果:

 

Android应用开发基础(避坑)------OptionMenu无法显示问题_第2张图片 Android应用开发基础(避坑)------OptionMenu无法显示问题_第3张图片 Android应用开发基础(避坑)------OptionMenu无法显示问题_第4张图片

(正常显示)

总结:在实验中,你会发现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数据

Android应用开发基础(避坑)------OptionMenu无法显示问题_第5张图片



    
        
            
            
        
    
    
        
            
            
        
    
    
        
            
            
        
    

 

你可能感兴趣的:(Android,Java,笔记)