2013-07-11 2 views
0

У меня есть диалоговое окно с некоторыми элементами. Мне нужно закрыть диалоговое окно, когда пользователь нажимает кнопку меню без каких-либо параметров закрытия. Как я могу это сделать?Закрытие диалогового окна предупреждения с помощью меню

Вот мой код

CharSequence[] cs = ques_cat.toArray(new CharSequence[ques_cat.size()]); 
finalCharSequence[]css=ques_catidtoArray(newCharSequence[ques_catid.size()]); 

AlertDialog.Builder builder = new AlertDialog.Builder(Gropinion_Questions.this); 
builder.setTitle("Choose Category"); 
builder.setItems(cs, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int item) { 
     String ss = css[item].toString(); 
     getSubCat(ss); 
    } 
}); 
AlertDialog alert = builder.create(); 
alert.show(); 

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater=getMenuInflater(); 
    menuInflater.inflate(R.menu.activity_main, menu); 
    if(alert !=null && alert.isShowing()) 
     alert.dismiss(); 
    return true; 
} 

ответ

0

на хост-активности, вы хотите, чтобы проверить, если пользователь зашел в меню и закрыть диалоговое окно есть:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    yourDialog.dismiss(); 
    return true; 
} 

Или вы можете перехватить нажатие клавиши меню, добавив это к вашему основному виду деятельности:

public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     if (yourDialog != null && yourDialog.isVisible()) { 
      yourDialog.dismiss(); 
     } 
     return true; 
    } else { 
     return super.onKeyUp(keyCode, event); 
    } 
} 
0

Поскольку OP wa nts, ​​чтобы закрыть диалоговое окно, которое в настоящее время отображается с помощью кнопки MENU. я считаю, что он хочет этого. Решение протестировано в эмуляторе.

void buildDialog(){ 
    AlertDialog alert = new AlertDialog.Builder(getActivity()).create(); 
    alert.setCancelable(false); 
    alert.setTitle("Close with menu button"); 

     @Override 
     public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_MENU) { 
       dialog.dismiss(); 
       return true; 
      } 
      return false; 
     } 
    }); 
    alert.show(); 
}