OnClickListener на NavigationView не работает - PullRequest
0 голосов
/ 31 декабря 2018

Я впервые использую NavigationView, и у меня возникла проблема.

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

Это мой код:

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val navigationView = findViewById<NavigationView>(R.id.navigationView)
    navigationView.setNavigationItemSelectedListener(this)

    phoneBTT.setOnClickListener {
        Toast.makeText(this, "Phone BTT is clicked", Toast.LENGTH_LONG).show()
    }
}

override fun onNavigationItemSelected(item: MenuItem): Boolean {

    when(item.itemId)
    {
        R.id.galleryBTT -> {
            Toast.makeText(this, "Gallery BTT is clicked", Toast.LENGTH_LONG).show()
        }

        R.id.exitBTT -> {
            Toast.makeText(this, "Exit BTT is clicked", Toast.LENGTH_LONG).show()
        }

        R.id.alarmBTT -> {
            Toast.makeText(this, "Alarm BTT is clicked", Toast.LENGTH_LONG).show()
        }

        R.id.creditCardBTT -> {
            Toast.makeText(this, "CreditCard BTT is clicked", Toast.LENGTH_LONG).show()
        }
    }

    return true
}

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Это мой xml-файл:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">



<android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">




    <Button
            android:text="Button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button" android:layout_marginTop="228dp"
            app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="192dp"/>

    <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:theme="?attr/actionBarTheme"
            android:minHeight="?attr/actionBarSize" android:id="@+id/toolbar3"/>


    <Button
            android:layout_width="36dp"
            android:layout_height="46dp" android:id="@+id/phoneBTT"
            app:layout_constraintEnd_toEndOf="@+id/toolbar3" app:layout_constraintStart_toStartOf="@+id/toolbar3"
            android:layout_marginStart="8dp"
            app:layout_constraintBottom_toBottomOf="@+id/toolbar3" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/toolbar3" app:layout_constraintHorizontal_bias="0.023"
            app:layout_constraintVertical_bias="0.0"
            android:background="@drawable/ic_phone_black_24dp"/>



</android.support.constraint.ConstraintLayout>

<android.support.design.widget.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/nav_menu" android:id="@+id/navigationView">

</android.support.design.widget.NavigationView>

Предыдущий NavigationView был вверху в этом скрипте (в DrawerLayout).Когда я положил это на дно, это начало работать!

0 голосов
/ 31 декабря 2018

Использовать навигацию Просмотр как это

private void setupNavigationView() {
    BottomNavigationViewHelper.disableShiftMode(bottomNavigation);

    menu = bottomNavigation.getMenu();
    selectFragment(menu.getItem(0));

    bottomNavigation.setOnNavigationItemSelectedListener(
            item -> {
                selectFragment(item);
                return false;
            });
}

protected void selectFragment(MenuItem item) {
    item.setChecked(true);
    FragmentManager fm = getSupportFragmentManager();
    switch (item.getItemId()) {
        case R.id.galleryBTT:
            //Put your Code here
            break;
        case R.id.exitBTT:
            //Put your Code 
            break;
        case R.id.creditCardBTT :
           //Put your Code 
            break;
    }
}
...