2013-07-11 57 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)