我有一个看似简单的问题。我正在滚动视图内的linearlayout内使用imagebuttons。我为其中一个按钮设置了onClickListener,该按钮将颜色切换为红色,透明然后再返回。我试过调用performClick()并手动编码例程,以在满足条件时触发。我遇到的问题是,无论我如何尝试执行此方法,调用.setBackgroundColor()的方法都将在调用时退出。我什至看不到日志中的return语句。这是代码。我确信这是一个简单的解决方法,但是我对这些事情并不十分熟悉。另外,我没有使用任何XML,并且尽可能避免使用它,因此在发布建议时请记住这一点。提前致谢!

我将尝试澄清我要完成的工作。我正在尝试模拟点击事件期间触发的事件,而没有发生点击事件。我已经用performClick()和我在这里的方式尝试过。在这两种情况下,我都没有调用.setBackgroundColor()并过早退出正在调用它的方法,并且该方法被调用。

经过一番混乱之后,我发现该方法将触发setBackgroundColor()并在我已经使用红色的情况下使用Color.RED时继续该方法。如果我尝试其他任何颜色,将不起作用。因此,似乎不想以这种方式更改颜色。有任何想法吗?

这里是处理程序:

IBFireBall.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                Log.d(TAG, "in onClick");
                if (Fireball.activated) {
                    Fireball.activated = false;
                    AbilityWidget.IBFireBall.setBackgroundColor(0);
                    Log.d(TAG, "was activated");
                } else {
                    Level.fireBall = new Fireball(context);
                    Fireball.activated = true;
                    AbilityWidget.IBFireBall.setBackgroundColor(Color.RED);
                    Log.d(TAG, "wasn't activated");
                }

            }

        });


这是另一种方法,Log仅打印出1和2:

public static void resetButton(String id) {

    if (id.equals("Fireball")) {

        if (Fireball.activated) {
            Log.d(TAG,"inside resetbutton 1");
            Fireball.activated = false;
            Log.d(TAG,"inside resetbutton2" );
            AbilityWidget.IBFireBall.setBackgroundColor(0);
            Log.d(TAG,"inside resetbutton4" );

        } else {

            Level.fireBall = new Fireball(context);
            Fireball.activated = true;
            AbilityWidget.IBFireBall.setBackgroundColor(Color.RED);
            Log.d(TAG, "wasn't activated");
        }

    }
}

最佳答案

1.首先不要使用"=="`` to compare Objects, use .equals()`。

2.您不是从resetButton()调用onClick()方法,如果未调用该方法,将如何调用该方法。

关于java - .setBackgroundColor()在单击事件之外不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11497621/

10-12 20:52