这是我的代码 -
View layout = LayoutInflater.from(this).inflate(R.layout.dialog_loc_info, null);
final Button mButton_Mobile = (Button) layout.findViewById(R.id.button);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
mButton_Mobile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(builder.)
showDialog(); // this is another dialog, nothing to do with this code
}
});
builder.setNeutralButton(getString(android.R.string.ok),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
答案 0 :(得分:35)
您可以使用AlertDialog
方法。
AlertDialog alert = new AlertDialog.Builder(context).create();
if (alert.isShowing()) {
alert.dismiss();
}
希望它有所帮助。
答案 1 :(得分:2)
另一种方法是使用方法使用构建器生成AlertDialog,然后在将AlertDialog设置为类变量时创建AlertDialog而不显示它。
然后使用.isShowing();
方法
示例:
AlertDialog mAlertDialog;
public showMyAlertDialog(View layout){
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setView(layout);
builder.setNeutralButton(getString(android.R.string.ok),new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
mAlertDialog = null; //setting to null is not required persay
}
});
mAlertDialog = builder.create()
mAlertDialog.show();
}
public boolean isAlertDialogShowing(AlertDialog thisAlertDialog){
if(thisAlertDialog != null){
return thisAlertDialog.isShowing();
}
}
希望了解如何使用此来源。 欢呼声
答案 2 :(得分:0)
你可以用它来检查:
if(alert != null && alert.isShowing()){
alert.show();// or alert.dismiss() it
}
答案 3 :(得分:0)
AlertDialog
扩展Dialog
,其中isShowing()。
提示:AlertDialog.Builder
创建AlertDialog
个实例。 :)
答案 4 :(得分:0)
对于全屏对话框,我检查它的一个实例是否已经在android.R.id.content
上显示,然后在replace()
上显示:
public void showMyDialog(
String someArgument1,
String someArgument2
) {
MyDialog dialog = MyDialog.newInstance(
someArgument1,
someArgument2
);
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
Fragment content = getSupportFragmentManager().findFragmentById(android.R.id.content);
if (content instanceof MyDialog) {
// An instance of MyDialog is already displayed! Replace it
t.replace(android.R.id.content, dialog).commitAllowingStateLoss();
} else {
t.add(android.R.id.content, dialog).commitAllowingStateLoss();
}
}
这是我没有标题栏的自定义全屏对话框:
public class MyDialog extends AppCompatDialogFragment {
public static MyDialog newInstance(
String someArgument1,
String someArgument2) {
MyDialog dialog = new MyDialog();
Bundle args = new Bundle();
args.putInt("arg1", someArgument1);
args.putInt("arg2", someArgument2);
dialog.setArguments(args);
return dialog;
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.my_dialog_layout, container, false);
// do whatever you want with the strings
// like displaying them in TextViews
String arg1 = getArguments().getString("arg1");
String arg2 = getArguments().getString("arg2");
return v;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}