我试图在某些情况下显示alertdialog(在代码中为MyIfStatement)。
我在OnCreate中创建了MyDialog,并在特定情况下按下确认按钮时试图显示OnClick。
我收到一个名为“错误的窗口DecorView的错误,该错误最初是在此添加的”。
我发现我们必须在活动结束之前关闭对话框。
您能告诉我我的密码有什么问题吗?
我的代码在下面。
public class BaseWidgetConfigureActivity extends AppCompatActivity
implements View.OnClickListener, SeekBar.OnSeekBarChangeListener{
private static final String TAG = BaseWidgetConfigureActivity.class.getSimpleName();
AlertDialog MyDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConfirmButton = findViewById(R.id.widget_confirm_button);
CancelButton = findViewById(R.id.widget_cancel_button);
ConfirmButton.setOnClickListener(this);
CancelButton.setOnClickListener(this);
MyDialog = new AlertDialog.Builder(BaseWidgetConfigureActivity.this)
.setMessage("My message.")
.setPositiveButton("Edit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
})
.create();
@Override
protected void onResume() {
super.onResume();
}
public void onClick(View view) {
switch (view.getId()){
case R.id.confirm_button:
if (MyIfStatement){
MyDialog.show();
}
break;
case R.id.cancel_button:
finish();
break;
default:
finish();
}
}
@Override
public void onPause(){
super.onPause();
}
}
在正面按钮onClick,我尝试过
1)
onStop();
dialog.dismiss();
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
finish();
2)
onPause();
dialog.dismiss();
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
finish();
3)
dialog.dismiss();
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
finish();
在负面按钮onClick中,我尝试过
1)
dialog.cancel();
finish();
2)
dialog.cancel();
依此类推。
使用此代码
public class BaseWidgetConfigureActivity extends AppCompatActivity
implements View.OnClickListener, SeekBar.OnSeekBarChangeListener{
private static final String TAG =
BaseWidgetConfigureActivity.class.getSimpleName();
AlertDialog MyDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConfirmButton = findViewById(R.id.widget_confirm_button);
CancelButton = findViewById(R.id.widget_cancel_button);
ConfirmButton.setOnClickListener(this);
CancelButton.setOnClickListener(this);
MyDialog = new AlertDialog.Builder(BaseWidgetConfigureActivity.this)
.setMessage("My message.")
.setPositiveButton("Edit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); //1.
startActivity(new
Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
})
.create();
@Override
protected void onResume() {
super.onResume();
}
public void onClick(View view) {
switch (view.getId()){
case R.id.confirm_button:
if (MyIfStatement){
MyDialog.show();
}
break;
case R.id.cancel_button:
dialog.dismiss();//2.
finish();
break;
default:
dialog.dismiss();//3.
finish();
}
}
@Override
public void onPause(){
dialog.dismiss(); //4.
super.onPause();
}
}
您必须先关闭对话框,然后才能完成所有操作或意图。
尝试一下,
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Write your Message Here....");
builder.setCancelable(true);
builder.setPositiveButton(
"Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.setNegativeButton(
"No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();