0

我有一个 Alerts 类,我用这种形式的方法定义我的应用程序的所有警报窗口

   public static void Alert1(Context con) {
            AlertDialog.Builder builder = new AlertDialog.Builder(con);
            builder.setTitle("my title");
            builder.setIcon(android.R.drawable.ic_dialog_info);
            DialogListner listner = new DialogListner();
            builder.setMessage("my message");
            builder.setPositiveButton("ok", listner);

            AlertDialog diag = builder.create();
            diag.show();
    }

现在我想以类似的方式创建一个带有复选框“不再显示此”的警报窗口,如果选中该复选框,则避免查看此警报

4

4 回答 4

3

我对这个问题有一个清晰和正确的方法

package com.example.user.testing;

import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CheckBox;

public class MainActivity extends AppCompatActivity {
CheckBox dontShowAgain;
public static final String PREFS_NAME = "MyPrefsFile1";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final AlertDialog.Builder adb = new AlertDialog.Builder(MainActivity.this);
    LayoutInflater adbInflater = LayoutInflater.from(MainActivity.this);
    View eulaLayout = adbInflater.inflate(R.layout.checkbox, null);

    dontShowAgain = (CheckBox) eulaLayout.findViewById(R.id.skip);
    adb.setView(eulaLayout);
    adb.setTitle("Attention");
    adb.setMessage("Your message here");
    adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {


            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("skipMessage", dontShowAgain.isChecked());
            editor.commit();
            dialog.cancel();
        }
    });

    adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    Boolean skipMessage = settings.getBoolean("skipMessage", false);
    if (skipMessage.equals(false)) {
        adb.show();
    }

}

}

于 2016-05-31T18:16:55.220 回答
1

您可以使用应用程序SharedPreference对象。通过第一次尝试阅读,在您共享的偏好中添加一个项目。您所要做的就是为对象设置一个值,然后每次都检查它。

于 2012-12-26T14:18:47.883 回答
0

正如其他人所建议的那样,您应该使用所需的消息和控件(复选框)创建自定义布局,并使用它SharedPreferences来跟踪用户选择

这里有 2 篇描述这些主题的博客文章。从 SharedPreferences 编写和读取
Android 中创建和显示自定义对话框 (免责声明:我的博客。)

于 2012-12-26T14:27:16.317 回答
0

您可以使用此复选框和 textview 为您的对话框创建单独的布局。膨胀此布局并添加将其设置为对话框的视图

那么它会像下面这样。

View view = layoutInflator.inflate(R.layout.dialogView,null);
//and set to your dialog
dialog.setView(view);

//Or you can set it to your builder also

并为复选框处理 onCheckListener

于 2012-12-26T14:18:12.470 回答