2013-11-26 3 views
3

Я использую этот код для проверки мой EditText фокус или нет:Android EditText: setOnFocusChangeListener не работает

gelar_pp=(EditText)polis.findViewById(R.id.gelar_pp); 
    gelar_pp.setOnFocusChangeListener(new OnFocusChangeListener() { 
    LinearLayout layout_nama_pp=(LinearLayout)findViewById(R.id.layout_nama_pp); 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(!hasFocus){ 
       layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1); 
      }else { 
       layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1_klik); 
      } 
     } }); 
    ibu_pp=(EditText)polis.findViewById(R.id.ibu_pp); 
    ibu_pp.setOnFocusChangeListener(new OnFocusChangeListener() { 
    LinearLayout layout_nama_pp=(LinearLayout)findViewById(R.id.layout_nama_pp); 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(!hasFocus){ 
       layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1); 
      }else { 
       layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1_klik); 
      } 
     } }); 
    edit_bukti_lain_pp=(EditText)polis.findViewById(R.id.edit_bukti_lain_pp); 
    edit_bukti_lain_pp.setOnFocusChangeListener(new OnFocusChangeListener() { 
    LinearLayout layout_nama_pp=(LinearLayout)findViewById(R.id.layout_nama_pp); 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(!hasFocus){ 
       layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1); 
      }else { 
       layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1_klik); 
      } 
     } }); 

, когда я сделать простой мой код, и изменения в:

gelar_pp.setOnFocusChangeListener(listener); 
ibu_pp.setOnFocusChangeListener(listener); 
edit_bukti_lain_pp.setOnFocusChangeListener(listener); 
     listener= new OnFocusChangeListener() {  
      LinearLayout layout_nama_pp=(LinearLayout)findViewById(R.id.layout_nama_pp); 
      public void onFocusChange(View v, boolean hasFocus) { 
       if(!hasFocus){ 
        layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1); 
       }else { 
        layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1_klik); 
       } 
      } 
     }; 

мой код не работает, ничего не меняется. есть ли какие-либо ошибки в моем коде?

ответ

1

Сначала инициализировать слушатель, а затем установить в EditTexts как

listener= new OnFocusChangeListener() {  
     LinearLayout layout_nama_pp=(LinearLayout)findViewById(R.id.layout_nama_pp); 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(!hasFocus){ 
       layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1); 
      }else { 
       layout_nama_pp.setBackgroundResource(R.drawable.border_corner_baris1_klik); 
      } 
     } 
    }; 
gelar_pp.setOnFocusChangeListener(listener); 
ibu_pp.setOnFocusChangeListener(listener); 
edit_bukti_lain_pp.setOnFocusChangeListener(listener); 

и установить фокусируемое свойство true для EditTexts, если не установлено ранее, как ...

editText.setFocusable(true); 
+0

Спасибо ... это то, чего я пропустил –

+0

Вы похожи на то, что знаете, как пользователь 'onFocusChangeListener' вы можете помочь мне с вопросом, который я разместил здесь? http://stackoverflow.com/questions/38341339/cancelling-event-due-to-no-window-focus-motionevent – ahitt6345

1

Попробуйте, как это

edit_Text.setOnFocusChangeListener(new OnFocusChangeListener() { 
@Override 
public void onFocusChange(View v, boolean hasFocus) { 
    if(hasFocus){ 
     Toast.makeText(getApplicationContext(), "on focus", Toast.LENGTH_LONG).show(); 
    }else { 
     Toast.makeText(getApplicationContext(), "lost focus", Toast.LENGTH_LONG).show(); 
    } 
    } 
}); 
4

Добавить в XML

android:focusable="true" 
android:focusableInTouchMode="true" 
Смежные вопросы