2014-02-07 2 views
0

У меня проблема.EditText Не работает

XML Coding

<EditText 
    android:id="@+id/edt_txt_id" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:focusable="false" 
    android:onClick="editTextClick" > 
</EditText> 

Java Кодирование

public void editTextClick(View v) { 

    if (v.getId() == R.id.edt_txt_id){ 

     System.out.println(" edit text click"); 
     EditText edtxtx =(EditText)v; 
     edtxtx.requestFocus(); 
     edtxtx.setText(""); 

     } 
} 

Я хочу, что, когда я нажимаю на EditText то текущий текст должен быть dissapperar. Но когда я нажимаю

android:focusable="false" 

Работа с событием Click прекрасно работает, но курсор больше не находится в Редактировании текста. Это означает, что если хотите ввести какой-то новый текст, то как бы войти в этот новый текст, даже курсор находится не в Edit-текста, и если я работаю с

android:focusable="true" 

нажмите событие не работает. Но доступно для любого нового редактирования. Что такое проблема? Я знаю, что это глупая ошибка, но где, я не могу понять. Спасибо заранее всем.

+0

Я думаю, что впервые увидел, что кто-то внедрил onClick Listener для EditText. Кстати, что вы пытаетесь сделать? Вы должны использовать http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html –

ответ

0

вам необходимо установить текст

изменение edtxtx.getText(""); к

edtxtx.setText(""); 
+0

Извините, это setText (""), это моя ошибка ввода. – DilAka

+0

Но это не моя главная проблема. Если бы вы могли помочь мне решить мою основную проблему, тогда я буду рад – DilAka

1

Попробуйте этот путь

public void editTextClick(View v) { 
     if (v.getId() == R.id.edt_txt_id) { 
      System.out.println(" edit text click"); 
      EditText edtxtx = (EditText) v; 

      edtxtx.setFocusable(true); // Add This Line And try 

      edtxtx.requestFocus(); 
      edtxtx.setText(""); 

     } 
    } 
+0

Спасибо за ваш ответ ... а как насчет android: focusable = "......"? – DilAka

+0

NOt working ... :( – DilAka

+0

Вы хотите реализовать какую-нибудь подсказку? –

0

Попробуйте

public void editTextClick(View v) { 
    if (v.getId() == R.id.edt_txt_id){ 
     System.out.println(" edit text click"); 
     EditText edtxtx =(EditText)v; 
     edtxtx.setFocusable(true); 
     edtxtx.setText(""); 

    }} 

После этого снова setFocusable(false); Чтобы повторить событие click.

0

Вместо установки android:focusable="false" в XML ... написать в коде на onCreate():

if (EditText.hasFocus()) { 
     EditText.clearFocus(); 
    } 
2

Привет в моем собственном мнении, пожалуйста, напишите код для OnFocusChangeListener который вы можете пишет следующим образом

final EditText edittxt = (EditText) findViewById(R.id.edittext); 
    edittxt.setOnFocusChangeListener(new OnFocusChangeListener() 
    { 
     @Override 
     public void onFocusChange(View v, boolean isFocus) 
     { 
      //yours code writing and actions to take further 
     } 
    }); 

вы можете проверить isFocus, который может быть истинным или ложным, и таким образом вы можете продолжить дальнейшее, что может быть сделано таким образом

if (isFocus == true) 
      {//some action 
      } else{//another action} 

и другой возможный путь для работы с кликом слушателем следующим

editText.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      ((EditText)v).setText(""); 
     } 
    }); 
+0

Ваше предложение заметное, но я не могу изменить свой способ кодирования, потому что он имеет давнюю причину, пожалуйста, дайте мне предложение по вышеуказанному контексту кода – DilAka

1

Вы должны реализовать setonFocusChange слушателя для EditText для достижения функциональных возможностей, которые вы хотите.

Вот пример слушателя фокуса.

edtxtx.setOnFocusChangeListener(new OnFocusChangeListener() { 
@Override 
public void onFocusChange(View v, boolean hasFocus) { 
    if(hasFocus){ 
     Toast.makeText(getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show(); 
      edtxtx.setText(""); 
    }else { 
     Toast.makeText(getApplicationContext(), "lost the focus", Toast.LENGTH_LONG).show(); 
    } 
    } 
}); 
+0

Спасибо за предложение, но, поскольку я сказал, что не могу справиться с этим на вашем пути, я использую пользовательский BaseAdater, и я объявляю его как setter-getter. Нажмите событие в mainActivity. Если я использовал в соответствии с вашим предложением, я получаю исключение NullPointer, потому что edt_xtx не объявляется в моей mainActivity. – DilAka

+0

Не работает ...... – DilAka

Смежные вопросы