Каковы параметры EdiText для Android: onValueChange - PullRequest
0 голосов
/ 18 сентября 2018

Оригинальный вопрос

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onValueChange="@{handler.passwordValidator}"
    android:text="@={model.password}"/>

Я не смог найти параметры android:onValueChange.Что я должен указать в параметрах метода ниже?

public void passwordValidator() {

}
  • Я пытался передать пустой атрибут этому атрибуту, думал, что журналы сообщат мне его аргументы, но я не смог этого получить.

  • Я не смог найти его в Документация EditText .

  • Результаты поиска Google нетсодержат любую информацию об этом.

Перепробовал множество возможных вариантов параметров

android:onValueChange="@{handler.passwordValidator}"

android:onValueChange="@{handler::passwordValidator}"

android:onValueChange="@{()->handler.passwordValidator()}"

android:onValueChange="@{(v)->handler.passwordValidator()}"

android:onValueChange="@{(view, value) ->handler.passwordValidator()}"

Также, пожалуйста, укажите способ найти параметры любого атрибута, чтобы я мог найти себя.

Обратите внимание, это не относится к android:onTextChanged.

Обновление 1

@ Tenten Я получил это в предложениях.

suggestion

Обновление 2 (я думаю, это не ошибка IDE)

Это не может быть ошибкой Android, потому что когда вы ставите неизвестный атрибут, то после компиляции возникает ошибка.

Дело 1 (инеизвестный атрибут)

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:asdf=""
    android:text="@={model.password}"/>

AGPBI: {"kind": "error", "text": "error: attribute \ u0027android: asdf \ u0027 not found.", "sources": [{" файл ":" E: \ AndroidWorkspace \ RawSamples \ Sample \ приложение \ SRC \ главная \ Рез \ расположение \ activity_main.xml», "позиция": { "StartLine": 23}}], "оригинальный": "", "tool": "AAPT"}

Случай 2 (с использованием android:onValueChange)

В этом случае ошибка изменяется, если естьне является атрибутом android:onValueChange, тогда ошибка должна быть такой же.

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onValueChange="@{handler::passwordValidator}"
    android:text="@={model.password}"/>
  • Что пошло не так: Выполнение не выполнено для задачи ': app: compileDebugJavaWithJavac'.

    android.databinding.tool.util.LoggedErrorException: Обнаружены ошибки привязки данных.**** / ошибка привязки данных **** msg: не удалось разрешить обработчик :: passwordValidator как прослушиватель.
    файл: E: \ AndroidWorkspace \ RawSamples \ Sample \ app \ src \ main \ res \ layout \ activity_main.xml loc: 23: 37 - 23:62 **** \ ошибка привязки данных ****

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Используйте это

EditText myTextBox = (EditText) findViewById(R.id.myTextBox);
myTextBox.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
}

public void beforeTextChanged(CharSequence s, int start, 
  int count, int after) {
}

public void onTextChanged(CharSequence s, int start, 
  int before, int count) {
    passwordValidator(s.toString());
 }
});

И это

public void passwordValidator(String password) {

}
0 голосов
/ 18 сентября 2018

заменить:

"@{handler.passwordValidator()}"

с

"@{handler::passwordValidator}"

также сделать следующий метод нестатичным

public void passwordValidator(View view) {

}
...