ящик навигации не будет начинать новую деятельность после щелчка элемента - PullRequest
0 голосов
/ 16 мая 2018

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

В моем ящике 3 предмета, и я хочу, чтобы каждый из них открывал разные действия, но когда я нажимаю на предмет, ничего не происходит.

 public class MarkerActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_markers);
        getWindow().getDecorView().setBackgroundColor(Color.WHITE);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().hide();

        mDrawerLayout = findViewById(R.id.drawer);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar,
                R.string.open_drawer, R.string.close_drawer);
        mDrawerLayout.addDrawerListener(toggle);
        toggle.syncState();
        NavigationView navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.map_button:
                Intent intent = new Intent(MarkerActivity.this, MapActivity.class);
                startActivity(intent);
                break;
            case R.id.comingsoon:
                Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show();
                break;
            case R.id.comingsoon2:
                Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show();
                break;
        }
        mDrawerLayout.closeDrawer(GravityCompat.START);
        return true;
    }
}

My activity_markers.xml

<android.support.v4.widget.DrawerLayout 
            android:id="@+id/activity_markers"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

                <android.support.design.widget.NavigationView
                    android:id="@+id/drawer"
                    app:headerLayout="@layout/header"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:background="@color/white"
                    app:menu="@menu/drawermenu"
                    android:layout_gravity="start">

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

drawermenu.xml

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/map_button"
        android:title="Map"/>
    <item android:id="@+id/comingsoon"
        android:title="Coming Soon"/>
    <item android:id="@+id/comingsoon2"
        android:title="Coming Soon"/>
</menu>

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Идентификатор навигационного окна и ящика неверны

Попробуйте:

    mDrawerLayout = findViewById(R.id.activity_markers);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar,
            R.string.open_drawer, R.string.close_drawer);
    mDrawerLayout.addDrawerListener(toggle);
    toggle.syncState();
    NavigationView navigationView = findViewById(R.id.drawer);
    navigationView.setNavigationItemSelectedListener(this);
0 голосов
/ 17 мая 2018

Я нашел ответ.Вам просто нужно вставить эту строку navigationView.bringToFront(); после NavigationView navigationView = findViewById(R.id.your_id);

0 голосов
/ 16 мая 2018

Вы, вероятно, размещаете каждый элемент отдельно в макете навигационного ящика.Если это так, вам нужно определить эти элементы в методе onCreate () и установить для них setOnClickListener.Не могли бы вы поделиться макетом ящика навигации xml.

В противном случае вы определили ListView, но не инициализировали его.

...