【问题标题】:Android - Toast安卓 - 吐司
【发布时间】:2014-08-12 03:36:15
【问题描述】:

我有一个 ImageView 数组。一旦您单击它们,就可以选择这些 ImageView。它们的 stroke 属性从 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 不会显示?

这是上面每个的代码sn-p。

图像视图:

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();
        }
    });

【问题讨论】:

    标签: java android android-toast


    【解决方案1】:

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

    图像视图:

    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();
        }
    });
    

    【讨论】:

    • 效果很好!但我没有评论finish();在后退按钮上,因为我想在单击它后返回主要活动并从那里显示 Toast 消息。谢谢,真的有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2013-10-21
    • 2020-07-26
    • 1970-01-01
    相关资源
    最近更新 更多