【问题标题】:Disable OnClickListener Android禁用 OnClickListener Android
【发布时间】:2013-07-10 04:40:57
【问题描述】:

我在我的应用中的图片上有一个OnClickListener。如果需要,它允许用户跳到应用程序的不同部分。应用的运行方式,他们只能使用 3 次。

我的问题是,我想买一条漂亮的裤子。所以我添加了一个R.anim.fade_out 动画,使图像在使用完所有 3 次后淡出。我正在使用另一种方法减少一个计数器。

问题是,当调用原始方法时,它会抛出一个Null Reference Exception,因为它找不到设置OnClickListener 的图像。我尝试将其包装在 If/Else If 声明中:

if(skipsAllowed > 0){

            skipButton.setOnClickListener(new OnClickListener(){

                public void onClick(View v){

                    if(skipsAllowed > 0){
                        try {
                            skippedPage();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }

                }
            });

        }else  if(skipsAllowed == 0){
            skipFadeOut = AnimationUtils.loadAnimation(null, android.R.anim.fade_out);
            skipButton.startAnimation(skipFadeOut);
        }

这仍然不起作用。关于如何阻止这种情况的任何想法?

我在每次新调用此 Activity 的开始时实例化 ImageView,我应该将它放在我的 If/Else If 中吗?

【问题讨论】:

  • 你一直在设置点击监听吗?

标签: java android onclick


【解决方案1】:

如果skipsAllowed == 0注销onClickListener

Remove an onclick listener

顺便说一句,你应该检查你的代码,我们通常只设置点击监听器一次

【讨论】:

  • 感谢您的链接,这很有帮助。你是对的,我将我的点击监听器移到了onCreate(),并在适当的时候简单地取消注册它。再次感谢!
【解决方案2】:

您收到异常是因为您将 null context 传递给 loadAnimation

您可以通过以下方式获取应用程序上下文: getApplicationContext()

动画开始后,您应该将按钮设置为INVISIBLE,以完全隐藏跳过按钮

Animation skipFadeOut = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_out);
        skipButton.startAnimation(skipFadeOut);
        skipButton.setVisibility(View.INVISIBLE);

【讨论】:

  • 谢谢!我实际上在发布后就看到了,我应该编辑这个问题。一切正常。
【解决方案3】:

简单:skipButton.setOnClickListener(null)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多