在Android开发中,可以通过AlertDialog来显示一个对话框,并获取用户的选择结果。为了暂停代码以获取来自AlertDialog的结果,可以使用回调函数或者使用异步操作。
public interface AlertDialogListener {
void onResult(boolean result);
}
public class MainActivity extends AppCompatActivity implements AlertDialogListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 弹出AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("是否继续操作?");
builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 调用回调方法,传递结果为true
onResult(true);
}
});
builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 调用回调方法,传递结果为false
onResult(false);
}
});
builder.show();
}
@Override
public void onResult(boolean result) {
// 处理AlertDialog的结果
if (result) {
// 用户选择了"是"
// 继续操作
} else {
// 用户选择了"否"
// 取消操作
}
}
}
public class MainActivity extends AppCompatActivity {
private AlertDialogListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建AlertDialogListener
listener = new AlertDialogListener() {
@Override
public void onResult(boolean result) {
// 处理AlertDialog的结果
if (result) {
// 用户选择了"是"
// 继续操作
} else {
// 用户选择了"否"
// 取消操作
}
}
};
// 执行异步任务
new AlertDialogTask().execute();
}
private class AlertDialogTask extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... voids) {
// 在后台线程中执行AlertDialog的显示和结果获取操作
final boolean[] result = new boolean[1];
runOnUiThread(new Runnable() {
@Override
public void run() {
// 弹出AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("提示");
builder.setMessage("是否继续操作?");
builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 设置结果为true
result[0] = true;
}
});
builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 设置结果为false
result[0] = false;
}
});
builder.show();
}
});
// 等待AlertDialog的结果
while (result[0] == null) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return result[0];
}
@Override
protected void onPostExecute(Boolean result) {
// 将AlertDialog的结果传递给主线程
listener.onResult(result);
}
}
}
以上是两种获取来自AlertDialog结果的方法,可以根据具体需求选择适合的方式。
云+社区技术沙龙[第10期]
腾讯技术开放日
云+社区沙龙online [新技术实践]
云+社区技术沙龙[第5期]
Elastic 中国开发者大会
领取专属 10元无门槛券
手把手带您无忧上云