BottomNavigationView.OnNavigationItemSelectedListener class must either be declared abstract java

Can't understand what's wrong with my code. The warning is: "class 'Home' must either be declared abstract or implement abstract method 'onNavigationItemSelected(MenuItem)' in 'OnNavigationItemSelectedListener'" I implemented bottom navigation, here is my code:

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.menu.MenuBuilder;

import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;

import com.google.android.material.bottomnavigation.BottomNavigationMenu;
import com.google.android.material.bottomnavigation.BottomNavigationView;

public class Home extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {

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

        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.menu);
        bottomNavigationView.setSelectedItemId(R.id.page_home);

        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.page_blogs:
                        startActivity(new Intent(getApplicationContext(),Blogs.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.page_home:
                        return true;
                    case R.id.page_money:
                        startActivity(new Intent(getApplicationContext(),Money.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.page_serv:
                        startActivity(new Intent(getApplicationContext(),Services.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.page_user:
                        startActivity(new Intent(getApplicationContext(),User.class));
                        overridePendingTransition(0,0);
                        return true;
                }
                return false;
            }
        });
    }
}

Ответы (1 шт):

Автор решения: Анастасия

Если Вы реализуете интерфейс BottomNavigationView.OnNavigationItemSelectedListener, значит, должны реализовать его метод onNavigationItemSelected(MenuItem). А у Вас в классе только onCreate().

Решение:

  1. Или уберите вот эту часть, чтобы класс Home не реализовывал интерфейс:
    implements BottomNavigationView.OnNavigationItemSelectedListener
  2. Или отдельно пропишите метод, который требуется:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
          case R.id.page_blogs:
               startActivity(new Intent(getApplicationContext(),Blogs.class));
               overridePendingTransition(0,0);
               return true;
          case R.id.page_home:
               return true;
          case R.id.page_money:
               startActivity(new Intent(getApplicationContext(),Money.class));
               overridePendingTransition(0,0);
               return true;
          case R.id.page_serv:
               startActivity(new Intent(getApplicationContext(),Services.class));
               overridePendingTransition(0,0);
               return true;
          case R.id.page_user:
               startActivity(new Intent(getApplicationContext(),User.class));
               overridePendingTransition(0,0);
               return true;
      }
      return false;
}

а затем пропишите bottomNavigationView.setOnNavigationItemSelectedListener(this);

→ Ссылка