1

我有一个看似简单的问题。我正在使用滚动视图内的线性布局内的图像按钮。我已经为其中一个按钮设置了一个 onClickListener,它将颜色切换为红色,然后是透明的,然后再返回。我尝试调用 performClick() 并手动编写例程以在满足条件时触发。我遇到的问题是,无论我如何尝试执行此操作,调用 .setBackgroundColor() 的方法都在调用时退出。我什至没有在我的日志中看到返回语句。这是代码。我确信这是一个简单的修复,但我对这些东西并不熟悉。此外,我没有使用任何 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");
        }

    }
}
4

2 回答 2

0

看来问题在于线程。您无法在 UI 线程之外更新 UI。案例已结束 :) 稍后我将链接一些有关该主题的文档。

于 2012-07-16T17:47:48.420 回答
0

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

2.您没有resetButton()从 中调用该方法,如果没有调用该方法,将onClick()如何调用该方法。

于 2012-07-16T03:13:15.883 回答