2013-07-11 56 views
0

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

我的问题是,我想要花哨的裤子。所以我添加了一个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); 
     } 

这仍然没有奏效。有关如何阻止此事的任何想法?

我实例化ImageView在每个新呼叫开始这个Activity,我应该把里面我的if/else如果?

+0

你在点击监听所有的时间设置? –

回答

1

如果skipsAllowed == 0注销onClickListener

Remove an onclick listener

顺便说一句,你应该检查你的代码中,我们通常可以设置一个点击收听一次

+0

感谢您的链接,帮助。你是对的,我把我的点击监听器移动到了'onCreate()',并且在它到了时候就简单地取消注册了。再次感谢! – Phoenix

2

由于您正在通过null上下文loadAnimation,您将收到一个例外。

你可以得到应用程序上下文: getApplicationContext()

和动画开始后您应按钮设置为看不见完全隐藏跳过按钮

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

谢谢!我在发帖后看到了,我应该编辑这个问题。这一切都像它应该的工作。 – Phoenix

4

简单:skipButton.setOnClickListener(null)