Фокус удален при вводе текста редактирования

#android #focus #android-edittext

#Android #фокус #android-edittext

Вопрос:

У меня есть EditText

 serialText = (EditText) findViewById(R.id.pinText);
  

Теперь, нажав на кнопку somebutton, я должен сфокусироваться на редактировании текста, чтобы что-то написать. Но когда я нажимаю внутри текста редактирования для записи, фокус удаляется, т. Е. Все, что я печатаю, не отображается в редактируемом тексте

Это код для этого,

 public void method(View v) {


arrowButton.setOnClickListener(new OnClickListener() {


@Override

public void onClick(View v) {

    serialNumber = serialText.getText().toString();

        if (serialNumber.equals("")) {
     } else {


}


} }...
  

Здесь, если я ничего не печатаю, это приводит к циклу if без каких-либо проблем, но аналогичного не происходит для другой части.

Не могли бы вы мне помочь?

Это мой полный код

 public void onClick(View v) {

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

        arrowButton = (Button) findViewById(R.id.arrowBtn);

        serialText = (EditText) findViewById(R.id.pinText);
        serialText.setVisibility(View.VISIBLE);
        arrowButton.setVisibility(View.VISIBLE);
        //serialNumber = serialText.getText().toString();
        arrowButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                serialNumber = serialText.getText().toString();
                if (serialNumber.equals("")) {
                    Toast.makeText(getApplicationContext(),
                            "Please enter the serial number",
                            Toast.LENGTH_SHORT).show();
                }
                else {

                    isRegularSerialNumber(serialNumber);

                    String encodedserialNumber = Base64.encodeToString(
                            serialNumber.getBytes(), Base64.DEFAULT);

                    receiveSerialData(encodedserialNumber);

                    if (serialResponse.equals("Validated Successfully!")) {
                        showAudio(v);
                    } else {
                        Toast.makeText(getApplicationContext(),
                                "Invalid Serial Number", Toast.LENGTH_SHORT)
                                .show();
                    }
                }
            }
        });
    }
}
  

Спасибо

Ответ №1:

Наконец, я решил проблему, проблема заключалась в том, что когда мы сохраняем текст редактирования в listview, и когда мы пытаемся написать внутри него, клавиатура поднимает listview вверх. Итак, нам нужно добавить свойство android:windowSoftInputMode=»adjustPan» в listview или в действие, содержащее представление списка в файле манифеста.

Ответ №2:

Вместо использования serialNumber.equals("") попробуйте заменить его на:

 serialNumber.length() == 0     
  

или

 serialNumber.matches("")
  

Комментарии:

1. serialNumber.equals("") не должно вызывать никаких проблем

Ответ №3:

Опубликованный вами код является onClick() of arrowButton , вы должны опубликовать onClick() serialText

Комментарии:

1. serialText.setOnClickListener(новый OnClickListener() { @Override public void onClick(Просмотр arg0) { SerialNumber = serialText.getText().toString(); } });