2012-07-24 6 views
1

몇 시간 동안 작동 시키려고했으나 적절한 해결책을 찾을 수 없습니다.AlertDialog OnCLickListener가 활성화되기 위해 뒤로 버튼을 눌러야합니다.

두 가지 버튼으로 AlertDialog를 만들고 각각에 OnClickListener를 하나 설정합니다.

문제는 경고 단추 중 하나를 "클릭"할 수 있도록 뒤로 단추를 눌러야한다는 것입니다.

Context myActivity = getContext(); 
OnClickListener posClickListener = new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     Log.d("AlertBuilder", "positive button"); 
     dialog.cancel(); 
     dialog.dismiss(); 

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.facebook.katana")); 
     getContext().startActivity(intent); 
    } 
}; 
OnClickListener negClickListener = new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     Log.d("AlertBuilder", "negative button"); 
     dialog.cancel(); 
     dialog.dismiss(); 
    } 
}; 

AlertDialog.Builder builder = new AlertDialog.Builder(myActivity); 
builder.setMessage("Impossible de lancer l'application Facebook.\r\nVeuillez vérifier que vous avez installé et mis à jour l'application Facebook.") 
     .setCancelable(false) 
     .setNegativeButton("Retour", negClickListener) 
     .setPositiveButton("Télécharger", posClickListener); 
AlertDialog alert = builder.create(); 
alert.show(); 

alert.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); // I tried this to simulate the back button action, but it doesn't work 

여기에 아무 것도 보이지 않습니까?

/* ============= 편집 ============= */

좋아, 내가 무슨 일이 일어나고 있는지 알아 낸 것 같아요 에.

실제로이 대화 상자는 대화 상자 클래스를 확장하는 FbDialog 내에서 만들지 않습니다.

아마 안드로이드가 인 셉션 좋아하지 않는다 ...

이 밖으로 정렬하는 방법에 대한 어떤 생각?

답변

1

를 사용하여 간단한 내부 클래스와 작동하는지 ... "이"UR 활동 컨텍스트를 통과 체크인 ..

AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
dialog.setMessage(message); 
dialog.setPositiveButton("TeleCharger", new DialogInterface.OnClickListener() 
{  
    public void onClick(DialogInterface dialog, int id) 
    { 
     //put positive code here 
    } 
});  
dialog.setNegativeButton("Retour", new DialogInterface.OnClickListener() 
{   
    public void onClick(DialogInterface dialog, int which) 
    { 
     //put negative code here 
    }  
});  
dialog.create().show(); 
+0

는 사실이 내가 시도한 첫 번째 코드는했지만, (가 동일했지만 나는 다시 버튼을 누르면에 대해 생각하지 않았다) 작동하지 않았다. 방금 ​​경우에 따라 청취자를 데려다 봤습니다. – viki53

+0

case_에서 코드를 시도했지만 결과가 정확히 동일합니다. 나는 여전히 뒤로 _ "버튼"_...을 눌러야합니다. – viki53

0

취소 또는 대화 상자 (다시 프레스)를 해제하려는 경우 당신은 할 수 있습니다 참조 대화를 can canable true로 설정하십시오. 예컨대 :

// it will not allow to cancel on back press 
dlgAlert.setCancelable(false); 
+0

나는 틀렸고 진실을 시도했다. 그러나 그것은 똑같이한다 : 나는 적어도 한 번 뭔가를 할 수 있기 위해 다시 한번 버튼을 눌러야 만한다. (기각하기 위해 다시 "뒤로"를 누르거나 버튼을 누른다) 그 행동은 좀 이상하다 ... – viki53

1
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) 
     showDialog(getApplicationContext()); 

    return true; 
    // use this instead if you want to preserve onKeyDown() behavior 
    // return super.onKeyDown(keyCode, event); 
} 
public void showDialog(Context mContext) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
    builder.setMessage("Impossible de lancer l'application Facebook.\r\nVeuillez vérifier que vous avez installé et mis à jour l'application Facebook.") 
       .setCancelable(false) 
       .setNegativeButton("Retour", negClickListener) 
       .setPositiveButton("Télécharger", posClickListener); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 
+0

뒤로 버튼을 누르면 대화 상자가 표시됩니다. 그렇습니까? 문제는 내 Phonegap 플러그인에서 오류가 발생하면 대화 상자를 표시한다는 것입니다. 하지만 AlertDialog의 버튼을 클릭하려면 뒤로 버튼을 눌러야합니다. 없으면 OnClick 이벤트가 발생하지 않습니다 ... – viki53

관련 문제