2017-10-17 67 views
-4

我一直在嘗試使用兩個OnClickListeners,但我無法弄清楚如何做到這一點。我不能使用兩個OnClickListeners?

任何人都可以幫助我解決我的代碼?

btnClear.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View paramView) { 

            numBase.getText().clear(); 
            numNikotin.getText().clear(); 

           } 

      btnAdd.setOnClickListener(new View.OnClickListener() { // I basically want this onClick Listener for the btnClear aswell, but I just cant get both to work. If I take away the btnClear setOnCLickListener Event then btnAdd works just fine. 

       public void onClick(View v) { 
        num1 = Double.parseDouble(numBase.getText().toString()); 
        num2 = Double.parseDouble(numNikotin.getText().toString()); 

        sum = num1/20 * num2; 
        String resultN = String.format("%.2f%%", Double.toString(sum)); 
        addResult.setText(resultN); 

        sum = num1 - sum; 
        String resultB = String.format("%.2f%%", Double.toString(sum)); 
        addResult2.setText(resultB); 
       } 
      } 
     }); 
    } 
} 

回答

4

不,你不能這樣做。只需將兩個按鈕之間的共享代碼拆分爲另一個方法並在兩個偵聽器中調用即可。

private foo() { 
    num1 = Double.parseDouble(numBase.getText().toString()); 
    num2 = Double.parseDouble(numNikotin.getText().toString()); 

    sum = num1/20 * num2; 
    String resultN = String.format("%.2f%%", Double.toString(sum)); 
    addResult.setText(resultN); 

    sum = num1 - sum; 
    String resultB = String.format("%.2f%%", Double.toString(sum)); 
    addResult2.setText(resultB); 
} 


btnClear.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View paramView) { 
      numBase.getText().clear(); 
      numNikotin.getText().clear(); 
      foo(); 

    } 
}); 


btnAdd.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
       foo(); 
     } 
}); 
+0

我認爲這是錯誤的答案。 –

+0

@CagriYalcin告訴我爲什麼? – nhoxbypass

+0

如果我是對的,他想單擊清除按鈕,然後單擊添加按鈕。我的意思是他必須清除他的文本才能添加新的文本。 –

0

試試這個 使用performClick()

public boolean performClick()

在API級別1

調用此觀點的OnClickListener,如果它被定義。

調用此視圖的OnClickListener(如果已定義)。執行與點擊相關聯的所有正常操作:報告可訪問性事件,播放聲音等

btnClear.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View view) { 
            btnAdd.performClick(); 
            numBase.getText().clear(); 
            numNikotin.getText().clear(); 
           } 
          }); 

比創造btnAdd

btnAdd.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          num1 = Double.parseDouble(numBase.getText().toString()); 
      num2 = Double.parseDouble(numNikotin.getText().toString()); 

      sum = num1/20 * num2; 
      String resultN = String.format("%.2f%%", Double.toString(sum)); 
      addResult.setText(resultN); 

      sum = num1 - sum; 
      String resultB = String.format("%.2f%%", Double.toString(sum)); 
      addResult2.setText(resultB); 
         } 
        }); 
+0

降票的原因......? –

+0

謝謝,我會試試這個。 – tegabyte

+0

@tegabyte讓我知道,如果有任何查詢 –

1

一個個獨立點擊收聽試試這個,

btnClear.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View view) { 

           numBase.getText().clear(); 
           numNikotin.getText().clear(); 
           btnAdd.performClick(); 
          } 
         }); 

btnAdd.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View view) { 
           num1 = Double.parseDouble(numBase.getText().toString()); 
       num2 = Double.parseDouble(numNikotin.getText().toString()); 

       sum = num1/20 * num2; 
       String resultN = String.format("%.2f%%", Double.toString(sum)); 
       addResult.setText(resultN); 

       sum = num1 - sum; 
       String resultB = String.format("%.2f%%", Double.toString(sum)); 
       addResult2.setText(resultB); 
          } 
         }); 
相關問題