Я читал вокруг вопросов о том, как установить объект для фокусировки, однако я не могу найти ответа на то, что я пытаюсь сделать.как заставить фокус редактировать текст
Использование Вкл Фокус Слушатель я сделал следующее:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
if (!arg1) {
if (Ehour.getText().length()<=0) {
Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show();
Calendar nohour = Calendar.getInstance();
Ehour.setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY)));
Ehour.setFocusable(true);
Ehour.requestFocus();
}
}
}});
Я попытался предложения от должностей последующих:
Я прочитал этот пост, но используя эти предложения, а также, кажется, не работы: How to set focus on a view when a layout is created and displayed?
Моя цель заключается в том, что, когда фокус редактирования текста теряется, мне нужно вернуться к нему, если указанная запись недействительна.
Кроме того, согласно предложению данного Биллом Частица Я также попытался:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
if (!arg1) {
if (Ehour.getText().length()<=0) {
Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show();
Calendar nohour = Calendar.getInstance();
Ehour.setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY)));
((EditText)arg0).requestFocus();
}
}
}});
** EDIT ** Я даже добавил ниже строку перед requestFocus():
((EditText)arg0).setFocusable(true);
*** EDIT ****
Пробовал с этого поста: Stop EditText from gaining focus at Activity startup
следующие изменения: В макете в заголовке первого макета я добавил:
android:id="@+id/enterdata"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
Тогда в OnChangeFocusListener я это сделал:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
if (!arg1) {
if (((EditText)arg0).getText().length()<=0) {
Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show();
Calendar nohour = Calendar.getInstance();
((EditText)arg0).setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY)));
findViewById(R.id.enterdata).requestFocus();
((EditText)arg0).setFocusable(true);
((EditText)arg0).setFocusableInTouchMode(true);
((EditText)arg0).requestFocus();
}
}
}});
Однако я все еще получаю такое же поведение, как и раньше, текст редактирования, который фокусируется, остается таким, но текст редактирования, который я хочу, чтобы фокус был направлен на внешний вид, но он не может использоваться, как будто он все еще ждет фокусировки.
*** EDIT ****
Код ниже согласно недавнему сообщению, найденной на StackOverflow, где пользователь, который задал вопрос, испытывает такую же проблему, как и я:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
if (!arg1) {
if (((EditText)arg0).getText().length()<=0) {
Calendar nohour = Calendar.getInstance();
((EditText)arg0).setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY)));
if (((EditText)arg0).requestFocus()) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Emin.clearFocus();
Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show();
}
}
}
}});
Глядя на это сообщение: Http: // StackOverflow.com/questions/1555109/stop-edittext-from-gaining-focus-at-activity-startup Я пробовал ответы, которые я добавлю к своему вопросу – TimCS
Я даже пытался жестко закодировать все текстовые поля редактирования, чтобы очистить сфокусируйтесь и установите для setFocusable и setFocusableInTouchMode значение false, но поведение по-прежнему остается таким же, как будто текст редактирования, на котором я хочу сосредоточиться, сосредоточен, но всякий ввод текста заканчивается текстом редактирования, который пользователь переместит на !!!!! ПОМОГИТЕ!!!! – TimCS
Он появляется в этом сообщении: http: //stackoverflow.com/questions/14327412/set-focus-on-edittext? Rq = 1 у пользователя была такая же проблема, и он не выглядел так, будто он был решен, однако я собираюсь чтобы попробовать, если они будут работать для меня – TimCS