2017-12-22 27 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); 
          } 
         }); 

ので、ログアウトボタンは何もしません。クラッシュしたり、何もしない。ちょうどnowtを行います。

大変助かりました。特に私が何か愚かなことをしたなら。

おかげで、事前

答えて

2

にあなたはショーの文が欠落しています

alert.show(); 

それはトーストに似て、あなたは明示的にあなたが行く存在ダイアログ

+0

を表示するには、show()を呼び出す必要があります。私は何か愚かなことを逃したことを知っていた。私は残りの権利を得ていることを安心。どうもありがとう。もう一組の目を持つだけで、時には多くの助けになります。 – emulus

+0

私はちょうど5分前に問題を抱えていましたが、共有環境設定からデータを取得しましたが、次の行で環境設定を初期化しました。 'Dは、理由笑:)あなたの問題を解決したら、とにかく答えを受け入れる – Kushan

+1

完了。私はそれが私をさせる前に経過するのに正しい時間量を待たなければならなかった。それで私の問題を早く指摘することができます – emulus

関連する問題