I need to show an AlertDialog with "Don't Show Again" checkbox. I searched, but I couldn't find a working solution:/
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
PackageManager pk = getPackageManager();
Drawable icon;
alertDialogBuilder
.setTitle(R.string.confirm)
.setPositiveButton(R.string.close, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
//Do something
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
If i'm not wrong then just Make one class extends with View .
public class DialogShow extends View {
SharedPreferences dialogPreferences;
String prefrencestring;
CheckBox nevershowagain;
Button closedialog;
Dialog dialog;
View view;
public DialogShow(final Context context) {
super(context);
dialog = new Dialog(context);
view = View.inflate(context, R.layout.startdialog, null);
dialog.setContentView(view);
nevershowagain = (CheckBox) view.findViewById(R.id.nevershowagain);
closedialog = (Button) view.findViewById(R.id.closedialog);
closedialog.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (nevershowagain.isChecked()) {
prefrencestring = "1";
dialogPreferences = PreferenceManager
.getDefaultSharedPreferences(context);
Editor editprefrences = dialogPreferences.edit();
editprefrences.putString("showdialog", prefrencestring);
editprefrences.commit();
}
dialog.dismiss();
}
});
dialogPreferences = PreferenceManager
.getDefaultSharedPreferences(context);
String check = dialogPreferences.getString("showdialog", "");
if (check.equals("1")) {
} else {
dialog.show();
}
}
}
Now call this class in your splash Activity on onCreate() method..
DialogShow d = new Dialog(this);
You can try this for AlertDialog :
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.myDialogLayout, null));
Dialog d = builder.create();
Edit: Please look into HERE FOR DETAILS EXPLANATION
将您的视图传递给setView()
方法,它将把您的视图设置为对话框主体。
alertDialogBuilder.setView(your_view);
Since the accepted answer is not a good one in 2023 (IMO) and this post is the first one on google search, here is my solution:
private void showAlertWithCheck() {
boolean infoShowed = PreferenceManager.getDefaultSharedPreferences(this).
getBoolean(Const.PREF_KEY_INFO_SHOWN, false);
if (!infoShowed) {
View view = getLayoutInflater().inflate(R.layout.dialog_remember_check, null);
final CheckBox chk_drc_Remember = view.findViewById(R.id.chk_drc_Remember);
chk_drc_Remember.setText(R.string.dont_show_again);
chk_drc_Remember.setChecked(true);
new AlertDialog.Builder(MainActivity.this).
setIcon(android.R.drawable.ic_dialog_info).
setMessage(R.string.fixed_info).
setView(view).
setNeutralButton(R.string.caption_ok, null).
setOnDismissListener(dialog ->
PreferenceManager.getDefaultSharedPreferences(this).edit().
putBoolean(Const.PREF_KEY_INFO_SHOWN,
chk_drc_Remember.isChecked()).apply()).
show();
}
}
requied view XML:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:orientation="vertical"
android:padding="@dimen/dialog_padding"
tools:context=".dialogs.PrayTimeDetailDialog"
tools:ignore="RtlHardcoded">
<CheckBox
android:id="@+id/chk_drc_Remember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:paddingLeft="@dimen/dialog_padding"
android:paddingRight="@dimen/dialog_padding"
android:text="@string/remember_method" />
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.