Вот мой код:EditText setOnKeyListener не работает, когда значение изменяется
private EditText EditHal;
....
....
@Override
public View getView(int position, View convertView, ViewGroup parent) {
layout = convertView;
if (convertView == null) {
layout = inflater.inflate(R.layout.my_fragment, null);
}
EditHal = (EditText) layout.findViewById(R.id.input_hal);
EditHal.setClickable(true);
EditHal.setFocusableInTouchMode(true);
....
EditHal.setText("" + 1, TextView.BufferType.EDITABLE); //hardcoded at Here
EditHal.requestFocus();
EditHal.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
Toast.makeText(getActivity(), EditHal.getText(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
return layout;
}
А вот XML макета my_fragment:
....
<EditText
android:id="@+id/input_hal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:ems="10"
android:inputType="numberDecimal"
android:hint="@string/hal"
android:maxLength="3"
android:clickable="true"
android:textColor="@color/white"
android:singleLine="true"
android:textSize="14sp" >
<requestFocus />
</EditText>
Вопрос:
на код выше, (EditText) Значение EditHal равно «1». Но если я изменяю значение EditHal на другой номер, а затем нажимаю клавишу Enter/Done на клавиатуре, значение EditHal все равно «1», никаких изменений вообще не происходит.
Я хочу, чтобы каждый раз, когда я меняю значение внутри поля EditHal, и я нажимаю Enter/Done Key, Toast покажет номер, который у меня есть. Пожалуйста, скажите мне, как его решить. Благодаря
редактируется (Раскрыты):
I изменяет код выше с этим:
//private EditText EditHal;
....
....
@Override
public View getView(int position, View convertView, ViewGroup parent) {
layout = convertView;
if (convertView == null) {
layout = inflater.inflate(R.layout.my_fragment, null);
}
//final added at EditText
final EditText EditHal = (EditText) layout.findViewById(R.id.input_hal);
EditHal.setClickable(true);
EditHal.setFocusableInTouchMode(true);
....
EditHal.setText("" + 1, TextView.BufferType.EDITABLE); //hardcoded at Here
EditHal.requestFocus();
EditHal.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
Toast.makeText(getActivity(), EditHal.getText(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
return layout;
}
и проблема исчезла. Спасибо, Жан Ян.
использовать эту ссылку для получения значения при нажатии ввода или сделать http://stackoverflow.com/questions/8063439/android-edittext-finished-typing-event –