2

オプションメニュー項目を使用してレイアウトを膨らませようとしています。私が使用しようとしたコードは次のとおりです

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を取得できます。

ただし、2行目では、ViewGroupパラメーターは受け入れられません。エラーメッセージは、「LayoutInflater型のメソッドinflate(int、ViewGroup、boolean)は、引数(int、test01、boolean)には適用できません」です。

パラメータに正しい値を指定していないようです。LayoutInflaterをsetContentViewに置き換えることができるため、メニュー自体は正常に機能します。

私は本当にあなたの助けに感謝します、「ありがとう

4

2 に答える 2

0

交換

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

li.inflate(R.layout.mylayout,null);
于 2013-01-09T07:32:28.323 に答える
-1

プログラムのsuper.oncreate(savedInstanceState)の代わりにbase.oncreate(savedInstanceState)を使用してください...また、メソッドでgetcontext()を定義する必要があります...

于 2013-08-09T10:24:53.547 に答える