Почему в моем приложении не отображается меню параметров? - PullRequest
0 голосов
/ 09 июля 2020

Я установил меню параметров в своем приложении android, но оно не отображается, вот код

<androidx.appcompat.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/main_toolbar"
        android:background="@color/colorPrimary">
        
        //there are some views the toolbar
        //also note i change the theme to android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        </androidx.appcompat.widget.Toolbar>

и вот меню

<item
    android:id="@+id/app_bar_search"
    android:icon="@drawable/ic_search_black_24dp"
    android:title="Search"
    app:showAsAction="ifRoom"
    app:actionViewClass="android.widget.SearchView" />

<item
    android:id="@+id/findFriends"
    android:title="Find Users"
    android:icon="@drawable/ic_person_add"
    app:showAsAction="ifRoom"/>



<item
    android:id="@+id/settings"
    android:title="Settings"
    android:icon="@drawable/ic_settings"
    app:showAsAction="ifRoom"/>

<item
    android:id="@+id/log_out"
    android:title="Log Out"
    />

<item
    android:id="@+id/exit"
    android:title="Exit"
    />

и вот код

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        super.onCreateOptionsMenu(menu)
        val inflater = menuInflater
        inflater.inflate(R.menu.main_menu, menu)

        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        when(item.itemId){
            id.app_bar_search ->{
                //donothing for now
            }
            id.exit -> super.onBackPressed()

            id.settings -> {
                Toast.makeText(this, "Settings clicked", Toast.LENGTH_LONG)
                    .show()
            }
            id.findFriends ->{
                val intent = Intent(this, UsersActivity::class.java)
                startActivity(intent)
            }
            id.log_out ->{
                FirebaseAuth.getInstance().signOut()
                val intent = Intent(this, LoginActivity::class.java)
                startActivity(intent)
            }
        }

        return super.onOptionsItemSelected(item)
    }

Я до сих пор не знаю, почему это не отображается. Кто-нибудь может мне помочь, пожалуйста? Я следил за многими уроками, и вот как они настраивают меню опций, но я не могу понять, почему оно не работает ..

Ответы [ 2 ]

1 голос
/ 09 июля 2020

В коде действия вы должны вызвать

setSupportActionBar(findViewById(R.id.main_toolbar))

в onCreate() после вашего setContentView(...) метода, чтобы ваша панель инструментов действовала как ActionBar, и это включило его меню.

0 голосов
/ 12 июля 2020

Вы можете использовать Toolbar как ActionBar:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.xxxx)
    setSupportActionBar(findViewById(R.id.toolbar))
    supportActionBar?.setTitle("")
}

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

Или вы можете использовать:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.xxx)
    val toolbar : Toolbar = findViewById(R.id.toolbar)
    toolbar.inflateMenu(R.menu.toolbar_menu)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...