[英]Creating an alertdialog in Android app inside a navigation menu to logout
我會盡力解釋這一點,並且我肯定會對此做一個簡單的解釋。
我有一個帶有注銷選項的導航菜單。 菜單項全部處於切換狀態,但注銷已分開,我已分開並使用了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);
}
});
因此,注銷按鈕什么也不做。 沒有崩潰或任何東西。 現在就做。
任何幫助,不勝感激。 特別是如果我做了一些愚蠢的事情。
提前致謝
您缺少表演聲明:
alert.show();
它類似於吐司,您必須顯式調用show()來顯示對話框
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.