Невозможно использовать LayoutInflater из onOptionsItemSelected - PullRequest
2 голосов
/ 17 мая 2011

Я пытаюсь надуть макет через пункт меню опций.код, который я пытался использовать, выглядит следующим образом:

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 не принимается. Сообщение об ошибке: «Метод inflate (int, ViewGroup, boolean) в типе LayoutInflater не применим для аргументов (int, test01, boolean)»

Кажется, я не предоставляю правильные значения для параметров, само меню работает нормально, так как я могу заменить LayoutInflater на setContentView

Я был бы очень признателен за вашу помощь, "спасибо

Ответы [ 2 ]

0 голосов
/ 09 августа 2013

Пожалуйста, используйте base.oncreate (saveInstanceState) взамен для super.oncreate (saveInstanceState) в вашей программе ... а также вам нужно определить getcontext () в вашем методе ...

0 голосов
/ 09 января 2013

Заменить

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

на

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