java - Android - toast

标签 java android android-toast

我有一组 ImageView。一旦你点击它们就可以选择这些 ImageViews。它们的笔划属性从 0(未选中)和 4(选中)变化。现在我有两个按钮,“ClearAll”和“Back”。如果我单击后退按钮,所有选定的 ImageViews 描述都将显示在 Toast 消息中(例如“您选择了 iv1、iv2、iv3”)。 “ClearAll”按钮的作用是清除选择 - 假设我点击了 ImageView 1、2 和 3 - 如果我点击“ClearAll”,它们的笔触将返回到 0(表示每个选择都被清除) .但是我有一个问题,假设我单击了 ImageView 1、2 和 3,然后我改变了主意,我想单击 ImageView 4、5、6 而不是单击“返回”。 Toast 消息显示我也已清除的那些 ImageView 的描述,输出是这样的,“你选择了 iv1、iv2、iv3、iv4、iv5、iv6。我如何修复我的代码,以便那些已被“ClearAll”清除的不会显示在 Toast 中?

这是上面每个的代码 fragment 。

ImageView :

for (int i = 0 ; i < color.length ; i++) {
        color[i] = (ImageView) findViewById (ivCirclesId[i]);
        final GradientDrawable ivCircleOnClick = (GradientDrawable) color[i].getBackground ();
        color[i].setTag ("0");
        color[i].setOnClickListener (new OnClickListener() {

            public void onClick (View v) {
                if (v.getTag ().toString ().equals ("1")) {
                    --ctr;
                    v.setTag ("0");
                    ivCircleOnClick.setStroke (0, Color.WHITE);
                } else {
                    if(ctr >= 8) {
                        Toast.makeText (getApplicationContext (), "Limit reached!", Toast.LENGTH_SHORT).show ();
                        return;
                    }
                    ++ctr;
                    v.setTag ("1");
                    ivCircleOnClick.setStroke (4, Color.WHITE);
                    message = message + "#" + v.getContentDescription ();
                    return;
                }
            }
        });

全部清除:

Button btnClear = (Button) findViewById (R.id.btnClearAll);
    btnClear.setOnClickListener (new OnClickListener () {

        @Override
        public void onClick (View v) {
            for (int i = 0 ; i < color.length; i++) {
                final GradientDrawable ivCircleOnClick = (GradientDrawable) color[i].getBackground ();
                ivCircleOnClick.setStroke (0, Color.WHITE);
                color[i].setTag ("0");
                ctr = 0;
            }
        }
    });

返回:

Button btnBack = (Button) findViewById (R.id.btnBack);
    btnBack.setOnClickListener (new OnClickListener () {

        @Override
        public void onClick (View v) {
            if (ctr >= 1) {
                Toast.makeText (Filter.this, message, Toast.LENGTH_SHORT).show();
                message = "";
            } 
            finish();
        }
    });

最佳答案

当您只取消选择一个 ImageView 时,这也应该有效。希望这会有所帮助......

ImageView :

for (int i = 0 ; i < color.length ; i++) {
    color[i] = (ImageView) findViewById (ivCirclesId[i]);
    final GradientDrawable ivCircleOnClick = (GradientDrawable) color[i].getBackground ();
    color[i].setTag ("0");
    color[i].setOnClickListener (new OnClickListener() {

        public void onClick (View v) {
            if (v.getTag ().toString ().equals ("1")) {
                --ctr;
                v.setTag ("0");
                ivCircleOnClick.setStroke (0, Color.WHITE);
            } else {
                if(ctr >= 8) {
                    Toast.makeText (getApplicationContext (), "Limit reached!", Toast.LENGTH_SHORT).show ();
                    return;
                }
                ++ctr;
                v.setTag ("1");
                ivCircleOnClick.setStroke (4, Color.WHITE);
                //message = message + "#" + v.getContentDescription ();
                return;
            }
        }
    });

全部清除:

Button btnClear = (Button) findViewById (R.id.btnClearAll);
btnClear.setOnClickListener (new OnClickListener () {

    @Override
    public void onClick (View v) {
        for (int i = 0 ; i < color.length; i++) {
            final GradientDrawable ivCircleOnClick = (GradientDrawable) color[i].getBackground ();
            ivCircleOnClick.setStroke (0, Color.WHITE);
            color[i].setTag ("0");
            ctr = 0;
            message = "";
        }
    }
});

返回:

Button btnBack = (Button) findViewById (R.id.btnBack);
btnBack.setOnClickListener (new OnClickListener () {

    @Override
    public void onClick (View v) {
        message = "";
        for(int i = 0 ; i < color.length ; i++){
             if(color[i].getTag().toString().equals("1")){
                  message = message + "#" + color[i].getContentDescription();
             }
        }
        if (ctr >= 1) {
            Toast.makeText (Filter.this, message, Toast.LENGTH_SHORT).show();
            message = "";
        } 
        //finish();
    }
});

关于java - Android - toast ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255753/

相关文章:

java - 是否可以使用 view inflator 给单个元素充气?

java - 在 Java 中按值传递还是按引用传递?

java - BlueJ 中 JVM 的重置与 JVM 的终止相同吗?

java - 如何以干净的方式检索短信对话

android - 增加 toast 的持续时间

android - 如何在主要 Activity 完成后显示服务中的 Toast?

java - ConstraintLayout背景

android - Genymotion 找不到 SDK 位置

android - 同步/更新 sqlite 数据库

java - Android 应用 Toast 混淆