2011-10-07 6 views
0

Androids AlertDialog 빌더를 활용하고 싶지만 사용자가 검색 키를 누를 때도 잡으려고합니다. 나는 커스텀 대화 상자에서 그것을 할 수 있지만, 어떻게해야 할지를 알 수 없다. 여기에 사용자 정의 섹션 내 코드 (I 사용자 정의에 대한 레이아웃이 없다) 주석 :경고 대화 상자에서 검색 키를 누르고 처리 할 수 ​​있습니까?

여기
public static boolean show(final Activity activity) { 
    final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity); 


    if (!preferences.getBoolean(ACCUWX.Preferences.PREFERENCE_EULA_ACCEPTED, false)) { 
    final TextView message = new TextView(activity); 
    final SpannableString s = 
    new SpannableString(activity.getText(R.string.eula_terms_info)); 
    Linkify.addLinks(s, Linkify.WEB_URLS); 
    message.setPadding(10, 10, 10, 10); 
    message.setText(s); 
    message.setTextColor(Color.GRAY); 
    message.setMovementMethod(LinkMovementMethod.getInstance()); 



     mAd = new AlertDialog.Builder(activity); 
     mAd.setTitle(R.string.terms_conditions); 
     mAd.setCancelable(false); 
     mAd.setPositiveButton(R.string.agree, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       accept(preferences); 
       if (activity instanceof OnEulaAgreedTo) { 
        ((OnEulaAgreedTo) activity).onEulaAgreedTo(); 
       } 
      } 
     }) 
     .setNegativeButton(R.string.disagree, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       reject(activity); 
      } 
     }) 
     .setOnCancelListener(new DialogInterface.OnCancelListener() { 
      public void onCancel(DialogInterface dialog) { 
       refuse(activity); 
      } 
     }) 

     .setView(message) 
     .create(); 

     mAd.show(); 

     return false; 
    } 
    return true; 
} 

는 대화입니다 :

Dialog dialog = new Dialog(activity) { 
@Override 
public boolean onKeyDown(int keyCode, 
       KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_SEARCH) 
     { 
       System.out.println("----- ignore search pressed"); 
       return true; 
     } 
     return false; 
} 
}; 

dialog.setContentView(R.layout.terms_and_conditions_dialog); 
dialog.setTitle(R.string.terms_conditions); 
dialog.setCancelable(false); 
dialog.show(); 

답변

0

당신은 단순히 이런 대화에 OnKeyListener를 첨부해야합니다

mAd.setOnKeyListener(new DialogInterface.OnKeyListener() { 
     public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
      if (keyCode == KEYCODE_SEARCH) { 
         // Handle search key 
         return true; 
      } 
      return false; 
     } 
    }) 
.create(); 
관련 문제