【问题标题】:how to show dialog only once如何只显示一次对话框
【发布时间】:2017-03-29 21:46:36
【问题描述】:

您好,我正在尝试创建包含两个按钮的对话框 [知道了! ] 和 [ 不要再显示我了

public boolean Show = false;

public void IntroSupport(){

    Show = true;

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    ImageView image = new ImageView(this);
    image.setImageResource(R.mipmap.ic_launcher);
    builder.setIcon(R.mipmap.service)
            .setTitle("Online Support :")
            .setView(image)
            .setMessage("Some text")
            .setNegativeButton("GOT it!",null)
            .setPositiveButton("Don't Show Me this Again", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            });
    builder.setCancelable(false);
    AlertDialog about = builder.create();
    about.show();
    TextView messageText = (TextView) about.findViewById(android.R.id.message);
    messageText.setGravity(Gravity.CENTER);
    Button nbutton = about.getButton(DialogInterface.BUTTON_NEGATIVE);
    nbutton.setTextColor(Color.BLACK);
}


        @Override
        public void onPageSelected(int position) {
            switch (position){
                case 0:
          getSupportActionBar().setTitle(Html.fromHtml("title :"+Pb));
                    tabLayout.getTabAt(0).setIcon(R.mipmap.ic1vrai);
                    tabLayout.getTabAt(1).setIcon(R.mipmap.ic__2vrai);
                    break;
                case 1:

                    if(Show == false){
                        IntroSupport();
                    }

                    getSupportActionBar().setTitle(Html.fromHtml("("titl"+sus));
                    tabLayout.getTabAt(1).setIcon(R.mipmap.ic_2faux);
                    tabLayout.getTabAt(0).setIcon(R.mipmap.ic1faux);
                    break;
            }
        }

【问题讨论】:

标签: java android dialog android-alertdialog


【解决方案1】:

使用SharedPreference 显示对话框与否。试试这个代码:

public boolean Show = false;

public void IntroSupport(){
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    ImageView image = new ImageView(this);
    image.setImageResource(R.mipmap.ic_launcher);
    builder.setIcon(R.mipmap.service)
            .setTitle("Online Support :")
            .setView(image)
            .setMessage("Somme text")
            .setNegativeButton("GOT it!",null)
            .setPositiveButton("Don't Show Me Again", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    SharedPreferences.Editor editor = getSharedPreferences("mypref", MODE_PRIVATE).edit();
                     editor.putBoolean("dontshow", true);
                     editor.commit();
                }
            });
    builder.setCancelable(false);
    AlertDialog about = builder.create();
    about.show();
    TextView messageText = (TextView) about.findViewById(android.R.id.message);
    messageText.setGravity(Gravity.CENTER);
    Button nbutton = about.getButton(DialogInterface.BUTTON_NEGATIVE);
    nbutton.setTextColor(Color.BLACK);
}


    @Override
    public void onPageSelected(int position) {
        switch (position){
            case 0:
          getSupportActionBar().setTitle(Html.fromHtml("title :"+Pb));
                tabLayout.getTabAt(0).setIcon(R.mipmap.ic1vrai);
                tabLayout.getTabAt(1).setIcon(R.mipmap.ic__2vrai);
                break;
            case 1:
                SharedPreferences prefs = getSharedPreferences("mypref", MODE_PRIVATE); 
                show = prefs.getBoolean("dontshow", false);
                if(Show == false){
                    IntroSupport();
                }

                getSupportActionBar().setTitle(Html.fromHtml("("titl"+sus));
                tabLayout.getTabAt(1).setIcon(R.mipmap.ic_2faux);
                tabLayout.getTabAt(0).setIcon(R.mipmap.ic1faux);
                break;
        }
    }

【讨论】:

  • 我使用了您的解决方案并根据我的情况进行了调整。工作得很好。谢谢!
【解决方案2】:

如果用户按下Don't show me this again 按钮,您可以将值存储到SharedPreferences。然后你应该将你的对话内容包装在一个 if 子句中,该子句检查 SharedPreferences 中的值是否已设置。

这里是 SharedPreferences 文档的链接:https://developer.android.com/reference/android/content/SharedPreferences.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    相关资源
    最近更新 更多