2017-12-22 28 views
0

나는 최선을 다해 설명 할 것이고, 이것에 대한 간단한 설명이있을 것이라고 확신합니다.로그 아웃 할 내비게이션 메뉴 안의 Android 앱에서 알림 대화 상자 만들기

로그 아웃 옵션이있는 탐색 메뉴가 있습니다. 메뉴 항목은 모두 스위치 케이스에 있습니다. 단,이 로그 아웃은 IF 문을 분리하여 사용했습니다. 로그 아웃하고 로그인 화면으로 곧바로 돌아가지만 UX 용으로 좋지 않다고 생각하여 사용자에게 확실히 로그 아웃할지 여부를 확인하는 옵션을 제공하는 alertdialog 상자를 추가하려고했습니다. .

내가 (이 그냥 스위치입니다)이 시도 :이 너무

navigationView = findViewById(R.id.navigation_view); 
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
      switch (item.getItemId()) 
      { 
       case R.id.nav_home: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new HomeFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle(""); 
        item.setCheckable(true); 
        mDrawerLayout.closeDrawers(); 
        break; 

       case R.id.nav_create_case: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new CreateCaseFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Create a Case"); 
        item.setCheckable(true); 
        mDrawerLayout.closeDrawers(); 
        break; 

       case R.id.nav_barcode_scanner: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new BarcodeScannerFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Barcode Scanner"); 
        item.setCheckable(true); 
        mDrawerLayout.closeDrawers(); 
        break; 

       case R.id.nav_checklists: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new ChecklistsFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Checklists"); 
        item.setCheckable(true); 
        mDrawerLayout.closeDrawers(); 
        break; 

       case R.id.nav_create_report: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new CreateReportFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Create Report"); 
        item.setCheckable(true); 
        mDrawerLayout.closeDrawers(); 
        break; 


      } 
      if (item.getItemId() == R.id.nav_logout) { 

       final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 
       alert.setTitle("Logout"); 
       alert.setMessage("Are you sure you wish to logout?") 
         .setCancelable(false) 
         .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialogInterface, int i) { 
           FirebaseAuth.getInstance().signOut(); 
          } 
         }) 
         .setNegativeButton("No", new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialogInterface, int i) { 
           Intent i2 = new Intent(MainActivity.this, MainActivity.class); 
           i2.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
           startActivity(i2); 
          } 
         }); 

, 로그 아웃 버튼이 작동하지 않습니다. 충돌하지 마십시오. 바로 지금.

도움을 주시면 감사하겠습니다. 특히 내가 바보 같은 짓을 한거라면.

미리 감사

답변

2

에 당신은 쇼 문을 누락 :

alert.show(); 

그것은 토스트와 비슷한, 당신은 명시 적으로 이동이 대화

+0

을 표시하는 표시()를 호출해야합니다. 나는 바보 같은 것을 놓친다는 것을 알았다. 내가 나머지를 바로 얻었지만 안심해라. 고마워. 또 다른 한 쌍의 눈을 가끔 가지고 도움이됩니다. – emulus

+0

하하 음, 때로는 작은 일이 생겼어. 5 분 전 공유 환경 설정에서 데이터를 가져 왔지만 다음 줄에서 환경 설정을 초기화 했어. 'D가 널 포인터를 생성 했어. 이유 LOL :) 어쨌든 문제가 해결되면 대답을 수락하십시오. – Kushan

+1

완료. 나는 그것을 허락하기 전에 경과 된 정확한 시간을 기다려야했다. 내 문제를 너무 빨리 지적하도록 가르쳐 줄거야. – emulus