Я генерирую несколько EditText
в цикле и хочу обновить «оценку», когда фокус потерян с одного из EditText
. Я также хочу проверить, что вход действителен, а если нет, пуст EditText и снова установите фокус.Множественные (динамические) задачи EditText и onFocusChange
В следующем коде добавлены EditTexts
и onFocusChangeListener
.
Проблема в том, что когда оценка недействительна (updateScore(id)
возвращает false), я хочу удалить EditText
и установить фокус на этот вид.
Проблема в моем коде, что если я ввести значение в EditText
, которые не являются действительными, а затем нажмите на EditText
B. Оба иB иметь фокус ... Я только хочу А иметь фокус ...
Как я могу вернуть фокус на предыдущую EditText и быть готовыми к новому вкладу в эту точке зрения?
for (int player = 0; player < numPlayers; player++)
{
EditText valueET = new EditText(this);
valueET.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
Log.v("Focus", "Lagrer unna den som har blitt klikket, " + String.valueOf(v.getId()));
etHasFocus = (EditText) v;
}
});
valueET.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus)
{
if(!updateScore(v.getId()))
{
if (etHasFocus != null && v.getId() != etHasFocus.getId())
etHasFocus.clearFocus();
v.requestFocus();
}
});
valueET.setId(200+player*100+row);
valueET.setInputType(InputType.TYPE_CLASS_NUMBER);
valueET.setTextColor(Color.BLACK);
valueET.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
tr.addView(valueET);
}
tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
Код для updateScore (ID) есть (упрощенно):
boolean updateScore(int id)
{
EditText t = (EditText) findViewById(id);
String text = t.getText().toString();
if(!text.equals(""))
{
int score = Integer.parseInt(text);
}
if(score != 9)
return false;
TextView total = (TextView) findViewById(ID_toal);
t2.setText(String.valueOf(score));
return true;
}
код обновляется, проблема сейчас в том, что OnClick никогда не называется ... (Так etHasFocus = нуль)
Можно ли использовать OnclickListener с EditText? Я добавил его, но он никогда не называется ... – EirikO
Это очень возможно: [Ссылка] (http://developer.android.com/reference/android/view/View.html#setOnClickListener (android.view.View.OnClickListener)). Можете ли вы опубликовать обновленный код? – Vikram
Хорошо, код в настоящее время обновлен .. – EirikO