2015-06-06 3 views
3

Просто скачан студия Android, и я использую руководство большого ботанического сада для программирования на андроиде, чтобы изучить веревки.Объяснение синтаксиса Java - getMenuInflater()

При запуске Android Studio этот код уже есть в главном файле деятельности:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    **getMenuInflater().inflate(R.menu.menu_quiz, menu);** 
    return true; 
} 

Я не понимаю, в getMenuInflater линию. В моем коротком опыте с java только объект приходит перед методом при использовании периода для разделения двух таких, как в dog.bark(). Здесь похоже, что линия означает вызов метода инфляции, который определяется в методе getMenuInflater. Однако я проверил исходный код для getMenuInflater(), и в его теле нет метода раздувания.

Может ли кто-нибудь демистифицировать синтаксис в этой строке для меня?

+0

getMenuInflater() возвращает объект, так что вы может использовать его вместо объекта – Chris

+0

интересным ... это, вероятно, сломало для меня лучшее. Спасибо!! –

ответ

2

Линия getMenuInflater().inflate(R.menu.menu_quiz, menu); короткие форма этого:

MenuInflater inflater = getMenuInflater(); 
inflater.inflate(R.menu.menu_quiz, menu) 
+0

прибивали ее! благодаря!! –

+0

lol сейчас у меня есть другой вопрос. как вы устанавливаете ссылочную переменную объекта равным методу? Например, в MenuInflater inflater = getMenuInflater() –

+1

вы не устанавливаете метод, вы устанавливаете результат вызова метода getMenuInflater(), в этом случае объект MenuInflater – isma3l

2

Вы расширяете деятельность и андроид студия добавляет эту линию для вас, чтобы настроить меню для макета, ниже фактическая реализация методы в классе деятельности:

public MenuInflater getMenuInflater() { 
      // Make sure that action views can get an appropriate theme. 
      if (mMenuInflater == null) { 
       initWindowDecorActionBar(); 
       if (mActionBar != null) { 
        mMenuInflater = new MenuInflater(mActionBar.getThemedContext(), this); 
       } else { 
        mMenuInflater = new MenuInflater(this); 
       } 
      } 
      return mMenuInflater; 
     } 
+0

Хм ... Где раздувает (R.menu.menu_quiz, меню) все это? –

+0

вы надуваете меню, как вы надуваете активность с помощью xml-макета, вы добавляете элемент меню через папку xml под/menu – 3xplore

0

Это будет что-то вроде меню будет автоматически создан в папке Res с именем, как menu.xml,

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 


<item android:id="@+id/slideshowbutton" 
     android:icon="@drawable/settings" 
     android:title="@string/settings"/> 

<item android:id="@+id/editbutton" 
     android:icon="@drawable/adduser" 
     android:title="@string/adduser"/> 

<item android:id="@+id/cropbutton" 
     android:icon="@drawable/message" 
     android:title="@string/message"/> 

<item android:id="@+id/detailsbutton" 
     android:icon="@drawable/logout" 
     android:title="@string/Logout"/> 

вы можете добавить список меню, как вы хотите

меню будет выглядеть как enter image description here

1

Я не совсем уверен, что вы смущены, но я верю тебе подумайте, что вы всегда должны иметь вызов метода после имени объекта. Это в основном верно, (для статических методов, за исключением), так что вы можете думать о вызове как

this.getMenuInflater() 

Это ключевое слово в Java со ссылкой на текущий объект вызова метода

Смежные вопросы