2013-08-21 29 views
1
dateField.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) {    
      if(!hasFocus && TextUtils.isEmpty(dateField.getText().toString())){ 
       dateField.setText(DateDefaultValue); 
      } else if (hasFocus && dateField.getText().toString().equals(DateDefaultValue)){ 
       dateField.setText("");     
      } 
      else 
      {btnShowHide.setVisibility(RelativeLayout.VISIBLE);} 
      if (!hasFocus) 
      { 
       if (dateField.getText().length() >0) 

        btnShowHide.setVisibility(RelativeLayout.INVISIBLE); 
      }   
     } 
    }); 

我想重用我的setOnFocusChangeListener和onTouchListener以及所有我爲我的EDITTEXT場賽事沒有做複製粘貼事件。JAVA重用onTouchListener,setOnFocusChangeListener活動爲EDITTEXT

回答

1

而不是創建一個匿名的內部方法,你應該創建一個新的類(例如MyListener())。

class MyListener extends FocusChangeListener{ 
@Override 
public void onFocusChange(View v, boolean hasFocus) { 
     if(!hasFocus && TextUtils.isEmpty(dateField.getText().toString())){ 
     dateField.setText(DateDefaultValue); 
} else if (hasFocus&&dateField.getText().toString().equals(DateDefaultValue)){ 
     dateField.setText(""); 
}else{ 
     btnShowHide.setVisibility(RelativeLayout.VISIBLE);} 
     if (!hasFocus && dateField.getText().length() >0) 
     { 
     btnShowHide.setVisibility(RelativeLayout.INVISIBLE); 
     } 
} 
} 

,並使用它是這樣的:dateField.setOnFocusChangeListener(new MyListener());

而且我不熟悉Android的API,但如果它不工作,嘗試用implements

+0

我有很多editText字段,我需要通過不使用editText1,editText2 ...來重新使用這些事件來使我的代碼整潔和簡單......我想將它分配給一個變量editTextEvent以輕鬆地重用我的事件。 – DreamBigAlvin

+0

這就是我告訴你要做的事情?對於需要偵聽器的每個對象,只需使用Field1.setOnFocusChangeListener(new MyListener()); - 另外,只是在我的回覆中發現了一個錯誤。現在應該修復。 – Damian

0

更換extends你應該只創建一個監聽器並引用所有查看事件至此類似

private FocusChangeListener mFocusChangeListener = new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(v == dateField){....} 
      else if(v == nameField){....} 

      if(!hasFocus && TextUtils.isEmpty(dateField.getText().toString())){ 
       dateField.setText(DateDefaultValue); 
      } else if (hasFocus && dateField.getText().toString().equals(DateDefaultValue)){ 
       dateField.setText("");     
      } 
      else 
      {btnShowHide.setVisibility(RelativeLayout.VISIBLE);} 
      if (!hasFocus) 
      { 
       if (dateField.getText().length() >0) 

        btnShowHide.setVisibility(RelativeLayout.INVISIBLE); 
      }   
     } 
    } 

然後:

dateField.setOnFocusChangeListener(mFocusChangeListener); 

希望得到這個幫助。

+0

是不是會導致錯誤的回調調用? – ticofab