What is onCreateOptionsMenu(Menu menu)

前端 未结 4 1008
太阳男子
太阳男子 2020-12-29 08:23

What are the two parameters Menu and menu in method onCreateOptionsMenu(Menu menu) and how to use this method. I have another question why this pa

相关标签:
4条回答
  • 2020-12-29 08:57

    First of all in onCreateOptionsMenu(Menu menu) function you passing only one parameter not two. You passing object of menu class there. We using this function to override the default function to customize our own menu like adding buttons and texts, images etc., in menu.

    For more reference

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.game_menu, menu);
        return true;
    }
    
    0 讨论(0)
  • 2020-12-29 09:00

    When onCreateOptionsMenu is called?

    onCreateOptionsMenu() is called by the Android runtime when it need to create the option menu.

    Android Developer Guide: Menus

    If you've developed your application for Android 2.3.x and lower, the system calls onCreateOptionsMenu() to create the options menu when the user opens the menu for the first time. If you've developed for Android 3.0 and higher, the system calls onCreateOptionsMenu() when starting the activity, in order to show items to the app bar.

    How to build an option menu?

    Please refer to other anwsers.

    Why onCreateOptionsMenu return Boolean

    Activity.html#onCreateOptionsMenu

    You must return true for the menu to be displayed; if you return false it will not be shown.

    Why onOptionsItemSelected return Boolean

    When you successfully handle a menu item, return true. If you don't handle the menu item, you should call the superclass implementation of onOptionsItemSelected() (the default implementation returns false).

    0 讨论(0)
  • 2020-12-29 09:01

    Menu is just the type of the parameter menu. For example you can have a String type for a variable named string, dog, etc. And in this case there's a Menu type for a parameter named menu.

    You use onCreateOptionsMenu() to specify the options menu for an activity. In this method, you can inflate your menu resource (defined in XML) into the Menu provided in the callback.

    For example:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.game_menu, menu);
        return true;
    }
    

    Fore more information, visit this link.

    As for this,

    Within an instance method or a constructor, this is a reference to the current object — the object whose method or constructor is being called.

    For example:

    public void sendMessage() {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
    }
    

    The constructor takes two parameters and a Context as its first parameter. this represents environment data and provides global information about an application environment.

    For more information on the intent example you provided, check this out.

    0 讨论(0)
  • 2020-12-29 09:01

    The intent of implementing this method is to populate de menu passed with the itens you define in the R.menu.game_menu layout file.

    Java

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

    Kotlin

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        menuInflater.inflate(R.menu.game_menu, menu)
        return true
    }
    

    After inflating the menu with the itens you might want to add some action when they are selected:

    Java

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_item:
                // Action goes here
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    

    Kotlin

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.menu_item -> {
                // Action goes here
                true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }
    
    0 讨论(0)
提交回复
热议问题