zid*_*sk8 17 android dialog android-activity
我想知道我是否可以冻结当前的Activity,而我等待另一个活动或对话(任何可以)完成.
我知道我可以为结果启动一个活动,并在那里处理它们,但是startActivityForResult()之后的代码仍然会被执行
这是我想做的事情:
PopupDialog dialog = new PopupDialog(this,android.R.style.Theme_Black_NoTitleBar);
dialog.show();
// wait here, and continue the code after the dialog has finishes
int result = getResultFromDialogSomehow();
if (result == 1){
//do something
}else{
//do something else
}
Run Code Online (Sandbox Code Playgroud)
我知道这听起来很奇怪,但是如果有人能告诉我如何实现这样的功能,我真的很感激.
Lab*_*lan 10
您也onActivityResult可以
在主要活动中使用
startActivityForResult(intent, 1); //here 1 is the request code
在您的Dialog类中
Intent intent = new Intent();
intent.putExtra(....) //add data if you need to pass something
setResult(2,intent); //Here 2 result code
Run Code Online (Sandbox Code Playgroud)
所以你的主要活动
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (resultCode == 2 && requestCode ==1){
//do something
}else{
//do something else
}
}
Run Code Online (Sandbox Code Playgroud)
Dha*_*dra 10
在对话框中如果您想要一个对话框结果,那么您的方式不是获得对话结果的正确方法.而不是你在Android中的方式有一个回调方法,可以在您选择对话框按钮后执行
例如
AlertDialog.Builder builder = new AlertDialog.Builder(getDialogContext());
builder.setMessage("Message");
builder.setPositiveButton("Yes", new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(this, "Yes", Toast.LENGTH_SHORT).show();
dialog.cancel();
}
});
builder.setNegativeButton("No", new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(this, "Yes", Toast.LENGTH_SHORT).show();
dialog.cancel();
}
});
builder.show();
Run Code Online (Sandbox Code Playgroud)
当您运行此代码时,onClick方法内部的代码将不会执行,但是当您单击对话框的按钮时它将执行.当您单击对话框上的任何按钮时,您将获得一个回调方法onClick,它将执行.
| 归档时间: |
|
| 查看次数: |
33010 次 |
| 最近记录: |