无法在onOptionsItemSelected中使用LayoutInflater

时间:2011-05-17 09:19:43

标签: android android-layout options-menu

我正在尝试通过选项菜单项来扩充布局。 我试图使用的代码如下

public class Test01 extends Activity
{
    @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
        ...
        setContentView(R.Layout.main);
        ...
    }
    @Override
        public boolean onCreateOptionsMenu(Menu menu)
        {
            theMenu=menu;
            MenuInflater inflater=getMenuInflater();
            inflater.inflate(R.menu.main_optmenu, theMenu);
            return(super.onCreateOptionsMenu(menu)); 
        }
    public boolean onOptionsItemSelected(MenuItem item)
        {
            switch(item.getItemId())
            {
                case R.id.item1:
                LayoutInflater li=(LayoutInflater)getContext().getSystemService(LAYOUT_INFLATER_SERVICE);
                li.inflate(R.layout.mylayout,this,true);
            case R.id.item2:
                ...
            default:
                ....        
        }
    }
}

我得到2个错误 - “getContext()未定义”所以搜索后我将其更改为getApplicationContext()然后我就能获得LAYOUT_INFLATER_SERVICE。

但是在第二行中不接受ViewGroup参数。 错误信息是 “LayoutInflater类型中的方法inflate(int,ViewGroup,boolean)不适用于参数(int,test01,boolean)”

似乎我没有为参数提供正确的值, 菜单本身工作正常,因为我能够用setContentView

替换LayoutInflater

我真的很感谢你的帮助, “谢谢

2 个答案:

答案 0 :(得分:0)

替换

li.inflate(R.layout.mylayout,this,true);

li.inflate(R.layout.mylayout,null);

答案 1 :(得分:-1)

请在程序中使用base.oncreate(savedInstanceState)代替super.oncreate(savedInstanceState)...还需要在方法中定义getcontext()...