Нажатие на навигацию не открывает действие

#android #bottomnavigationview

#Android #bottomnavigationview

Вопрос:

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

 public class MainActivity 
        extends AppCompatActivity 
        implements 
        BottomNavigationView.OnNavigationItemSelectedListener {

      BottomNavigationView nav;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    nav = (BottomNavigationView) findViewById(R.id.navigation);

    nav.setOnNavigationItemSelectedListener(this);
    } //  ------------------end of on create--------------------


      @Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

         switch (menuItem.getItemId()) {

        case R.id.prof:

            Intent intent = new Intent(MainActivity.this, 
            profile.class);
            menuItem.setIcon(R.drawable.profile);
            nav.setItemTextColor(ColorStateList.valueOf(Color.WHITE));
            startActivity(intent);


            break;


        case R.id.hm:
            Intent intent1 = new Intent(MainActivity.this, 
            MainActivity.class);
            nav.setItemTextColor(ColorStateList.valueOf(Color.WHITE));
            startActivity(intent1);


            break;


        case R.id.consult:
            Intent intent3 = new Intent(MainActivity.this, tabs.class);
            nav.setItemTextColor(ColorStateList.valueOf(Color.WHITE));
            startActivity(intent3);

            break;


        case R.id.dash:
            Intent intent2 = new Intent(MainActivity.this, 
            Dashboard.class);
            nav.setItemTextColor(ColorStateList.valueOf(Color.WHITE));
            startActivity(intent2);

            break;


    }
    return false;
}

}
  

мой основной макет действия

 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.BottomNavigationView
    android:id="@ id/navigation"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:background="@color/purple"
    app:itemIconTint="@drawable/nav_item_color_state"
    app:itemTextColor="@drawable/nav_item_color_state"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/navigation" />
   </android.support.constraint.ConstraintLayout>
  

мой navigation.xml

 <?xml version="1.0" encoding="utf-8"?> 
 <menu xmlns:tools="http://schemas.android.com/tools"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@ id/hm"
    android:icon="@drawable/hom"
    android:enabled="true"
    app:showAsAction="ifRoom"
    tools:ignore="MenuTitle" />

<item
    android:id="@ id/prof"
    android:icon="@drawable/profile"
    android:enabled="true"
    app:showAsAction="ifRoom"
    tools:ignore="MenuTitle" />

 <item
    android:id="@ id/consult"
    android:icon="@drawable/consult"
    android:enabled="true"
    app:showAsAction="ifRoom"
    tools:ignore="MenuTitle" />
    <item
    android:id="@ id/dash"
    android:icon="@drawable/dashboard"
    android:enabled="true"
    app:showAsAction="ifRoom"
    tools:ignore="MenuTitle" />
  </menu>
  

это мой nav_item_color_state.xml

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/white" 
 android:state_enabled="true"/>
<item android:color="@color/colorPrimaryDark" 
 android:state_enabled="false"/>

</selector>
  

это мой интерфейс во всех моих действиях
введите описание изображения здесь

, пожалуйста, помогите мне, я обновляю вопрос

Комментарии:

1. Поместите этот код в свой onCreate после инициализации навигационного объекта nav.setOnNavigationItemSelectedListener(this);

2. открыто, но заголовок значка не отображается

3. Я имею в виду, что код R.id.consult закомментирован. Это может быть причиной ваших проблем?

4. @EpicPandaForce для начала он даже не будет вводить этот метод.

5. Я удаляю комментарий «проконсультироваться», но он по-прежнему не отображается при нажатии

Ответ №1:

Вы не привязываете к нему никакого onNavigationItemSelected() прослушивателя; например:

 nav = (BottomNavigationView) findViewById(R.id.navigation);
nav.setNavigationItemSelectedListener(this);
  

Комментарии:

1. setNavigationItemSelectedListener отображается с ошибкой

2. @noraKhaled что вы подразумеваете под «появляется с ошибкой»? он читает implements NavigationView.OnNavigationItemSelectedListener , поэтому я бы предположил, что это должно быть известно. R.id.navigation может быть неправильный resId, и эта ошибка может быть NullPointerException . Может ли это быть?

3. спасибо за ваш ответ, но значок по-прежнему не отображается при нажатии

4. @noraKhaled пожалуйста, добавьте макет XML к вопросу. возможно, вы имеете в виду resId в каком-то другом представлении … вместо тех, что в BottomNavigationView . просто добавьте ведение журнала в код, чтобы посмотреть, что произойдет.

5. Я добавляю весь макет, который я использую