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)
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)
| 归档时间: |
|
| 查看次数: |
4727 次 |
| 最近记录: |