[英]Android Open AlertDialog from Navigation Drawer
我將NavigationDrawer
與菜單中的一些虛擬Fragments
和AlertDialog
。 當我單擊從抽屜中打開AlertDialog
,我可以使用 no 按鈕關閉它,但是當我再次單擊打開它時,它不想關閉它。
然后我必須首先切換到抽屜中的其他片段之一,然后單擊對話框將其打開。
關閉它后如何再次打開它而無需第一次切換到另一個菜單項。
主活動.java
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.drawer_fragment_one:
if (!menuItem.isChecked()) {
selectedIndex = COLLAPSING_TOOLBAR;
menuItem.setChecked(true);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new FragmentTabOne(), COLLAPSING_TOOLBAR_FRAGMENT_TAG).commit();
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.drawer_fragment_two:
if (!menuItem.isChecked()) {
selectedIndex = COLLAPSING_TOOLBAR;
menuItem.setChecked(true);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new FragmentTabTwo(), COLLAPSING_TOOLBAR_FRAGMENT_TAG).commit();
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.drawer_alert_dialog:
if (!menuItem.isChecked()) {
selectedIndex = ALERT_DIALOG;
menuItem.setChecked(true);
final AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setIcon(R.mipmap.ic_launcher);
dialog.setTitle(R.string.app_name);
dialog.setMessage(R.string.dialog_msg);
dialog.setPositiveButton(R.string.dialog_option_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.setNegativeButton(R.string.dialog_option_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
dialog.show();
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
return false;
}
我認為當您第一次單擊處理您設置為 true 的對話框的項目時,當您嘗試第二次單擊時,您測試是否未選中,返回 false,因此您的對話框未顯示
在下面的代碼片段中:
case R.id.drawer_alert_dialog:
if (!menuItem.isChecked()) {
selectedIndex = ALERT_DIALOG;
menuItem.setChecked(true);
final AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setIcon(R.mipmap.ic_launcher);
dialog.setTitle(R.string.app_name);
dialog.setMessage(R.string.dialog_msg);
dialog.setPositiveButton(R.string.dialog_option_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.setNegativeButton(R.string.dialog_option_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
.... (Add the line here)
}
});
dialog.show();
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
添加以下行,希望這必須有效:
menuItem.setChecked(false);
在我提到的地方添加它(在此處添加行)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.