ANDROID:如何等待点击警报对话框?

Mar*_*vák -1 android dialog return android-asynctask android-alertdialog

我准备了带有警报对话框的 AsyncTask,其中是 / 否按钮。我需要为 Yes 返回 1,为 No 返回 0。我不完全理解 AsyncTask。添加点击等待时间需要做什么?当前状态不等待

代码类:

class MyTask extends AsyncTask<Void,Integer,Integer> {
TextView ozn_=null;
AlertDialog dialog=null;
AlertDialog.Builder builder=null;
ImageView icon=null;
int ret=0;

public int getRetValue(){
    return ret;
}

public MyTask(int a){
    ret=a;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    ozn_ = new TextView(LoginActivity.this);
    AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
    ImageView icon = new ImageView(LoginActivity.this);
    icon.setBackgroundResource(R.drawable.warn);
    builder.setMessage("oznam");
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(set_dp(60), set_dp(60));
    icon.setLayoutParams(params);
    ozn_.setGravity(Gravity.LEFT);
    LinearLayout l1 = new LinearLayout(LoginActivity.this);
    l1.setPadding(set_dp(12), set_dp(12), set_dp(12), set_dp(20));
    l1.setOrientation(LinearLayout.HORIZONTAL);
    l1.setGravity(Gravity.CENTER_VERTICAL);
    ozn_.setPadding(set_dp(12), 0, 0, 0);
    l1.addView(icon);
    l1.addView(ozn_);
    builder.setView(l1);

    builder.setPositiveButton("Áno", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            publishProgress(11);                   //somewhere  here is needed control of wait
            getResources().notifyAll();
            dialog.dismiss();
        }
    });
    builder.setNegativeButton("Nie", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            publishProgress(222);             //somewhere  here is needed control of wait
            getResources().notifyAll();
            dialog.dismiss();
        }
    });

    dialog = builder.create();
    dialog.setOnShowListener(new DialogInterface.OnShowListener() {
        @Override
        public void onShow(DialogInterface arg0) {
            dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(0xff00b300);
            dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(0xffd56300);
        }
    });
    dialog.setCancelable(false);                 //backbutton
    dialog.setCanceledOnTouchOutside(false);     //klick outside dialog
    dialog.show();
}

@Override
protected Integer doInBackground(Void... rets) {
        return ret;
}

@Override
protected void onProgressUpdate(Integer... values) {
    super.onProgressUpdate();
    ret++;
}

@Override
protected void onPostExecute(Integer aVoid) {
    super.onPostExecute(aVoid);
    Toast.makeText(LoginActivity.this, "post"+ret, Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)

}

活动代码:

a=654; MyTask task=new MyTask(a); task.execute(); a=task.getRetValue();
Run Code Online (Sandbox Code Playgroud)

Mar*_*vák 5

SOLVED!

This solution is waiting on click event really and return value.

private boolean resultValue;

public boolean getDialogValueBack(Context context)
{
     final Handler handler = new Handler()
{

@Override
public void handleMessage(Message mesg)
{
    throw new RuntimeException();
} 
};

AlertDialog.Builder alert = new AlertDialog.Builder(context);
    alert.setTitle("Title");
    alert.setMessage("Message");
    alert.setPositiveButton("Return True", new 
    DialogInterface.OnClickListener()
    {
        public void onClick(DialogInterface dialog, int id)
    {
       resultValue = true;
       handler.sendMessage(handler.obtainMessage());
    }
});
    alert.setNegativeButton("Return False", new DialogInterface.OnClickListener()
  {
   public void onClick(DialogInterface dialog, int id)
  {
      resultValue = false;
       handler.sendMessage(handler.obtainMessage());
  }   
   });
      alert.show();

  try{ Looper.loop(); }
  catch(RuntimeException e){}

  return resultValue;
  }
Run Code Online (Sandbox Code Playgroud)