마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

로그인 후 DashboardActivity에 들어가는 동작에서 강제종료가 발생합니다.

0 추천
package com.hanseo_software.keepermini;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.google.android.material.navigation.NavigationView;

public class DashboardActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    //Variables
    DrawerLayout drawerLayout;
    NavigationView navigationView;
    Toolbar toolbar;

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

        /*---------------------Hooks------------------------*/
        drawerLayout = findViewById(R.id.drawer_layout);
        navigationView = findViewById(R.id.nav_view);
        toolbar = findViewById(R.id.toolbar);

        /*---------------------Tool Bar------------------------*/
        setSupportActionBar(toolbar);

        /*---------------------Navigation Drawer Menu------------------------*/

        //Hide or show items
//        Menu menu = navigationView.getMenu();
//        menu.findItem(R.id.nav_logout).setVisible(false);
//        menu.findItem(R.id.nav_profile).setVisible(false);

        navigationView.bringToFront();
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
        drawerLayout.addDrawerListener(toggle);
        toggle.syncState();
        navigationView.setNavigationItemSelectedListener(this);

        navigationView.setCheckedItem(R.id.nav_home);
    }

    @Override
    public void onBackPressed() {

        if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
            drawerLayout.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

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

        switch (menuItem.getItemId()) {
            case R.id.nav_home:
                break;
            case R.id.nav_login:
                Intent intent = new Intent(DashboardActivity.this, LoginActivity.class);
                startActivity(intent);
                break;

            case R.id.nav_share:
                Toast.makeText(this, "Share", Toast.LENGTH_SHORT).show();
                break;
        }

        drawerLayout.closeDrawer(GravityCompat.START);
        return true;
    }
}

logcat

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.navigation.NavigationView.bringToFront()' on a null object reference

 

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hanseo_software.keepermini/com.hanseo_software.keepermini.DashboardActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.navigation.NavigationView.bringToFront()' on a null object reference
준톨이짱짱 (440 포인트) 님이 2020년 4월 16일 질문
navigationView.bringToFront();
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
        drawerLayout.addDrawerListener(toggle);
        toggle.syncState();
        navigationView.setNavigationItemSelectedListener(this);

        navigationView.setCheckedItem(R.id.nav_home);

부분에서 문제가 발생하는데 화면이 전환될 때만 이러네요

1개의 답변

0 추천
 
채택된 답변

https://cishome.tistory.com/1

 

참고하시는게 좋으실거같네요 

 

검색어 : Attempt to invoke virtual method 'void

로그에도 "널포인트 익셉션"

공과근성 (6,020 포인트) 님이 2020년 4월 16일 답변
준톨이짱짱님이 2020년 4월 17일 채택됨
좋은 참고가 됐습니다. 감사합니다.
...