2012-05-15 4 views
2

В моем приложении я пытаюсь открыть диалоговое окно при запуске активности и положительной кнопке. при нажатии на эту кнопку откроется новое действие. Он работает отлично со следующим кодом. Но когда я долгое время нажимаю кнопку меню или диалоговое окно кнопки поиска, исчезают. как я могу заставить это диалоговое окно оставаться постоянным, даже если я нажму кнопку меню или кнопку поиска. Благодарю.почему диалоговое окно исчезает при нажатии кнопки поиска

public class Sam3Activity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    TextView title = new TextView(this); 
    title.setText("DM2"); 
    title.setBackgroundColor(Color.DKGRAY); 
    title.setPadding(10, 10, 10, 10); 
    title.setGravity(Gravity.CENTER); 
    title.setTextColor(Color.WHITE); 
    title.setTextSize(20); 
    /* alert message */ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setCustomTitle(title); 

    builder.setMessage("dialog with message").setCancelable(false).setPositiveButton(
      "Ok", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.dismiss(); 
        Log.d("choose","on dissmiss"); 
       startActivity(new Intent(getApplicationContext(), 
                   StatisticDisplay.class));//second activity 
       } 
      }); 
    AlertDialog alert = builder.create(); 

    alert.show(); 
    } 
} 
+0

жаль, что я был немного поздно в проверке ответа. – thej

+0

thej без проблем –

ответ

4

Заботьтесь о нажатых путем присоединения onKeyListener к Dialog, в моем примере я просто заботиться о ключе поиска, но вы должны получить точку. В случае, если вы никогда не работали с такими слушателями, возвращение true означает, что событие должно не размножаться и поэтому заботиться о том, чтобы система не улавливала клавишу search при нажатии при показе диалога.

В любом другом случае (ключ не является KEYCODE_SEARCH), он просто пройдет этот слушатель, как будто его не было. :)

... 
builder.setOnKeyListener(new OnKeyListener(){ 
      @Override 
      public boolean onKey(DialogInterface dialog, 
           int keyCode, 
           KeyEvent event) { 
       if (keyCode == KeyEvent.KEYCODE_SEARCH) return true; 
       return false; 
      } 
     }); 
... 

Соответствующая документация: