Фрагмент панели инструментов на выбранных элементах не называется kotlin, несколько решений, что рекомендуется? - PullRequest
1 голос
/ 21 сентября 2019

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

Я видел некоторые места, где люди советуют нам использовать NavController, другие советуют нам использовать onOptionsItemSelected как в действии, так и во фрагменте, и переопределяют то, что вынужно.Вдобавок к этому у нас есть androidx.appcompat.widget.Toolbar, который даже не нужно раздувать, просто используйте app: menu = в XML-файле и гуляйте все там, но как мне прослушивать щелчки?

<androidx.appcompat.widget.Toolbar
            app:menu="@menu/menu_fragment_main">

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

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Вам необходимо вызвать setHasOptionsMenu во фрагменте метода onCreate ():

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

Вот как вы раздуваете меню и реагируете на нажатие:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case R.id.refresh:
        //Repond to click
        break;
    }
    return true;
}

А вот ваше меню.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/refresh" android:title="Refresh" android:icon="@drawable/ic_action_refresh" />
</menu>
0 голосов
/ 22 сентября 2019
val toolbar = fragmentInflater.findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbarMainActivity)
        (activity as AppCompatActivity).setSupportActionBar(toolbar)

Это решило проблему, отчасти устало, но я хорошо комментирую, почему это произошло позже.

Я думаю, что это была некоторая смесь, панель инструментов в xml, androidx, неправильный импорт для панели инструментовне андроид х и тд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...