我一直试图让它工作几个小时,但我找不到合适的解决方案。
这就是:我用2个按钮创建一个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中创建这个对话框,它扩展了Dialog类。
也许Android不喜欢Inception ......
如何解决这个问题?
答案 0 :(得分:1)
使用简单的内部类并检查它是否有效...在“this”传递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();
答案 1 :(得分: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();
}
答案 2 :(得分:0)
查看是否要取消或关闭对话框(反压)可以将对话框设置为可以正确的对话框。 例如:
// it will not allow to cancel on back press
dlgAlert.setCancelable(false);