【问题标题】:How to add confirm box when i click on checkbox?单击复选框时如何添加确认框?
【发布时间】:2017-01-17 19:50:05
【问题描述】:

我有两个动态复选框,一个用于删除视频,另一个用于保存视频。我想添加一个确认框,以便在我单击复选框时确认我的操作。如何在我的代码中添加确认框?

deleteCheckBox.setOnClickListener(deleteRelatedThumbnail(deleteCheckBox));

 View.OnClickListener deleteRelatedThumbnail(final CheckBox checkBox) {

        return new View.OnClickListener() {
            public void onClick(View v) {
                int index = checkBox.getId();
                if (((CheckBox) v).isChecked() && deleteVideoFile(index - 1)){

                    // if(deleteVideoFile(index-1)){
                    bitMapsAvailable.remove(index - 1);
                    bitMapsFilePath.remove(index - 1);
                    Toast.makeText(MainActivity.this, "Selected video file is deleted successfully.", Toast.LENGTH_SHORT).show();
                    showThumbnails();
                }else{
                    Toast.makeText(MainActivity.this, "Not deleted", Toast.LENGTH_SHORT).show();
                }

            }
        };
    }





    saveCheckBox.setOnClickListener(saveRelatedThumbnail(saveCheckBox));
    View.OnClickListener saveRelatedThumbnail(final CheckBox checkBox) {

        return new View.OnClickListener() {
            public void onClick(View v) {
                int index = checkBox.getId()-31;
                if (((CheckBox) v).isChecked()){
                String src = bitMapsFilePath.get(index-1);
                String destination = mVideoFolder+"/"+new File(src).getName();

                File srcFile = new File(src);
                srcFile.renameTo(new File(destination));
                Toast.makeText(MainActivity.this, "Saved in "+destination, Toast.LENGTH_SHORT).show();
                bitMapsAvailable.clear();
                for(String filePath: bitMapsFilePath ) {
                    File file = new File(filePath);
                    file.delete();
                }
                bitMapsFilePath.clear();
                Toast.makeText(MainActivity.this, "Temporary videos are deleted successfully",Toast.LENGTH_SHORT).show();
                showThumbnails();
            }
        }
    };
    }

【问题讨论】:

  • 您可以创建一个包含 2 个按钮的布局 - 是和否。当您单击删除/保存时,显示该布局(从可见性变为可见),如果按下是按钮,则继续删除/保存,否则无论您喜欢什么。
  • 使用 SharedPreference 来保存状态。看答案stackoverflow.com/questions/10016752/saving-checkbox-states
  • 查看我编辑的答案,复制它并用您的删除复选框替换它

标签: android android-alertdialog android-checkbox


【解决方案1】:

您可以使用警报对话框

    deleteCheckBox.setOnClickListener(deleteRelatedThumbnail(deleteCheckBox));

 View.OnClickListener deleteRelatedThumbnail(final CheckBox checkBox) {

        return new View.OnClickListener() {
            public void onClick(View v) {
                int index = checkBox.getId();
                if (((CheckBox) v).isChecked() && deleteVideoFile(index - 1)){
                    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);// use you activity name
              builder.setMessage("Are you sure you want to delete? ")
                      .setPositiveButton("Ok",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                      bitMapsAvailable.remove(index - 1);
                    bitMapsFilePath.remove(index - 1);
                    Toast.makeText(MainActivity.this, "Selected video file is deleted successfully.", Toast.LENGTH_SHORT).show();
                    showThumbnails();

                    }
                })

        .setNegativeButton("Cancel",new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
             Toast.makeText(MainActivity.this, "Not deleted", Toast.LENGTH_SHORT).show();

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

                    // if(deleteVideoFile(index-1)){

                }else{
                    Toast.makeText(MainActivity.this, "Not deleted", Toast.LENGTH_SHORT).show();
                }

            }
        };
    }

【讨论】:

    【解决方案2】:

    只需用户 alertdialog 即可:

    private void showLocationDialog() {  
    
    AlertDialog.Builder builder = new AlertDialog.Builder(yOURActivity.this);
    builder.setTitle(getString(R.string.dialog_title));
    builder.setMessage(getString(R.string.dialog_message));
    
    String positiveText = getString(android.R.string.ok);
    builder.setPositiveButton(positiveText,
            new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // positive button logic
        }
    });
    
    String negativeText = getString(android.R.string.cancel);
    builder.setNegativeButton(negativeText,
            new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // negative button logic
        }
    });
    
    AlertDialog dialog = builder.create();
    // display dialog
    dialog.show();
    

    }

    【讨论】:

    • 你能用我的代码演示如何使用它吗?因为已经有一个 onclicklistener,所以我很困惑。
    • 在 if 块中调用 showLocationDialog() 并在单击警报对话框的按钮时处理您的条件
    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 2021-06-07
    • 2018-09-13
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多