2016-08-11 10 views
0

Я новичок в android. Я знаю, что этот вопрос задавали раньше, но я все еще путаюсь. Что этот метод делает при возвращении их в моем onCreateOptionMenu() и onOptionItemSelected()Что делает этот метод super.onCreateOptionMenu() и super.onOptionsItemSelected (item)

Может ли один помочь мне, что эффект у меня будет

1) если я вернуть истинный

2) если я вернуть ложь

3) Что произойдет, когда я вернуть super.onCreateOptionMenu() и super.onOptionItemSelected

Может кто-нибудь, пожалуйста, объясните мне это с хорошим примером. Я все еще путаюсь.

+1

Вы проверили документы? – Shaishav

+0

Я знаю, что в Google есть много вещей, но мне нужен кто-то, кто может объяснить мне простым образом, что они делают – FaisalAhmed

ответ

0

onCreateOptionMenu() метод, используемый для создания меню опций.

метод

onOptionsItemSelected() используется для обработки события в меню опций, т.е. который срабатывает действие меню и что должно быть результатом этого действия и т.д.

0

Я хотел бы добавить свой 3-й вопрос ответ в ответ на Dnyanesh

super.onCreateOptionMenu() и super.onOptionItemSelected

Если вы пишете это, то он будет первым называть этот метод ваш родительский класс Если продлить любой класс в этом class.It Wi Я буду работать как родительский класс, если методы также находятся в родительском классе.

1

Хорошо. Я получил свой вопрос:

Que 1:

Что этот метод не при возвращении их в моем onCreateOptionMenu() и onOptionItemSelected()

Ans:

onCreateOptionMenu() используется для Inflate меню в панели действий.

onOptionItemSelected() используется для захвата OnClick этого меню

Que 2:

если я вернуть истинные или ложные

Ans:

ref !!! вы должны вернуть истину, если вы завышенное меню в этом файле или щелкнуть выбранное вами меню. иначе u должен возвращать false. поэтому компилятор найдет для мужчин или пункт меню на другой странице.

например. у вас есть одно действие и два фрагмента, то если меню или пункт меню не найдут в активности, тогда компилятор найдет его в фрагменте. если вы вернете истину, то дальнейший поиск не будет.

Que 3:

Почему использовать супер?

Ans:

так компилятор узнать, что в этом файле нет определяется пользователем меню или элемента, значение.

+0

когда я использую getMenuInflater(). Inflate (R.menu.menu, menu); return true; и когда я нажимаю кнопку меню с мобильного телефона, появляется еще одна копия пунктов меню. Затем я использовал menu.clear(), и его работа прекрасна. поэтому я всегда должен делать menu.clear ... см. здесь http://stackoverflow.com/questions/38869893/menu-items-keeps-on-adding-on-every-menu-button-press – FaisalAhmed

+0

Я вижу, что в вашем вопрос, оба время вы возвращаете супер. если вы используете return true и не запускаете меню снова из своего фрагмента, то никакое меню не будет дублироваться. Я добавляю ответ на ваш вопрос здесь: http://stackoverflow.com/a/38889193/5432730 –

3

Хорошо, давайте сначала посмотрим на два метода интереса

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

если возвращение верно == >>> Это означает, что вы хотите увидеть меню опций, которые вы завышены. если возвращение ложным == >>> вы не хотите, чтобы показать, что

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 

    if (id == R.id.action_settings) { 
     return true; 
    } 
    // Activate the navigation drawer toggle 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

Согласно документации верно -> Event Потребляемый Теперь она не должна быть направлена ​​на другое событие ложь -> Forward для другого потреблять

Это Boolean Возвращаемого типа на самом деле приносит пользу, когда мы работаем с несколькими фрагментами и каждый фрагмент имеет свое собственное меню Option и Переопределение OnOptionItemSelected (в основном в дизайне планшета)

в этом случае Android отслеживать каждые фрагменты OnOptionItemSelected метамфетамина спосо так, чтобы избежать этого

а) Если какой-либо фрагмент потребляя событие в onOptionsItemSelected() так вернуть «истинное» еще возвращение «ложь»

б) Если Возвращается ложь, то он будет отслеживать другой подключенный осколок (onOptionsItemSelected) метод до тех пор, пока он не закончит весь фрагмент, или кто-то его поглотит.

И ваш третий ответ, как KrishnaJ написано

super.onCreateOptionMenu() и super.onOptionItemSelected

Если вы пишете это, то он будет первым называть этот метод Если вы расширяете свой родительский класс любой класс в этом классе. Он будет работать как родительский класс, если методы также находятся в родительском классе.

+0

когда я использую getMenuInflater(). Inflate (R.menu.menu, menu); return true; и когда я нажимаю кнопку меню с мобильного телефона, появляется еще одна копия пунктов меню. Затем я использовал menu.clear(), и его работа прекрасна. поэтому я должен всегда делать menu.clear ... см. здесь http://stackoverflow.com/questions/38869893/menu-items-keeps-on-adding-on-every-menu-button-press – FaisalAhmed

+0

да, все в порядке. Вот как разрабатывается Android, позволяет говорить о некоторых действиях, если некоторые значки должны быть изменены в панели действий ... поэтому весь обзор должен обновиться, и меню oncreteoptions будет вызвано –