Захват EditText Потерянный Фокус - PullRequest
3 голосов
/ 01 июня 2011

Я давний, самоучка, программист-любитель VB, который сейчас пытается учить себя Java и Android одновременно.Я говорю это, так что вы будете знать, что я плохо говорю на жаргоне, и я очень плохо знаком с этими двумя занятиями.

Я разработал форму Android, которая содержит серию блоков EditText, содержимоекаждый из которых я хочу сохранить в массив после того, как пользователь заполнил его. Я выяснил, как это сделать, если пользователь нажимает клавишу Enter.Однако люди на самом деле этого не делают: они нажимают на поле, вводят, а затем нажимают на следующий элемент.

Я VB, я мог бы написать код для события lostfocus.Но я не могу найти подобный метод в Java.

Наконец, вопрос: есть ли способ захвата, когда EditText потерял фокус, поэтому я могу сохранить напечатанные данные в этом типе, не полагаясь на EnterКлюч?

public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){ 
        Editable wasted=edittext_asset.getText(); 
        vehdata[vehNo][Integer.parseInt((String) edittext_asset.getTag())]=wasted.toString(); 
        return true; 
    } 
    return false; 
} 

Пожалуйста, помните, что я настолько новичок в этом, что я все еще часто не уверен, куда поместить фрагменты кода, чтобы заставить их работать (новый файл? Метод oncreate? Кто знает).Любое руководство, которое вы можете дать мне, будет с благодарностью и благодарностью.

Ответы [ 2 ]

6 голосов
/ 01 июня 2011

Давайте разберёмся по частям:

  • «Я мог бы написать код для события lostfocus. Но я не могу найти подобный метод в Java.»: Посмотрите на OnFocusChangeListener API
  • "есть ли способ захвата, когда EditText потерял фокус": Да, с использованием прослушивателя выше и abstract void onFocusChange(View v, boolean hasFocus)
  • "Пожалуйста, помните, что я новичок вthis ": мы все были новичками здесь в какой-то момент :) Если вы проявите почтение и ответите сообществу (либо ответами, либо просто голосуя" за "/" вниз "и принимая ответы), вам не о чем беспокоиться.

А потом еще немного:

Я, как и вы, самоучка, поэтому я чувствую вашу боль прямо сейчас, и я хотел бы дать вам несколько советов, когда вы начинаетес android: Вы добавили два тега: и .Кодирование в java для рабочего стола довольно сильно отличается от кодирования для устройства Android, поэтому, пожалуйста, примите это во внимание.Вы действительно собираетесь кодировать в Java или просто в Android?Помимо некоторых очевидных различий в API, основное отличие заключается во взаимодействии с пользователем.Большинство java-программ ожидают полноценную клавиатуру и статический экран, в то время как приложения для Android полагаются на прикосновения, и в этом ключевое отличие.

Сенсорность важна, потому что обычно нет никакого потерянного фокуса без усиления фокусировки на каком-либо другом представлении.,Типичный EditText будет заполнен пальцем на IME, и этот Просмотр будет сохранять фокус, пока тот же самый палец не коснется другого View (возможно, EditText, возможно, Button).За пределами «окна» обычно нет щелчков.

С другой стороны, в устройстве Android вы ожидаете одного пользователя, а не неизвестное количество пользователей на рабочем столе.Таким образом, сохранение данных и их извлечение обрабатываются совершенно по-разному (см., Например, Сохранение состояния активности Android с помощью Save Instance State )

Вы можете выбрать захват / потерю фокусавыполнить действие или дождаться нажатия кнопки, или даже использовать другие методы (например, TextWatcher для сохранения данных при каждом вводе символов).Итак, у вас есть много вариантов для разработки вашего приложения.Самое сложное - это продуманный дизайн.

Удачи!

1 голос
/ 01 июня 2011

Я только что сделал что-то похожее на это.Я обработал это, создав цикл for, который просто получает содержимое каждого текста редактирования по идентификатору и добавляет его текст в массив.Я сделал это в методе onclick, поскольку сделал все это после того, как пользователь нажал кнопку.

String ohhai;
String duh = et.getText().toString();
int number = Integer.parseInt(duh);
List<String> myCollection=new ArrayList<String>();
EditText stuff;
int editt;
String loggy;
for(int z = 0; z < number; z++){
    stuff = (EditText)findViewById(z);
    editt = stuff.getId();
    loggy = Integer.toString(editt);
    Log.e("How Many", loggy);
    ohhai = stuff.getText().toString();
    myCollection.add(ohhai);
}

String [] arr = myCollection.toArray(new String[myCollection.size()]);
String separator = "0";
StringBuffer result = new StringBuffer();
if (arr.length > 0) 
   result.append(arr[0]);
for (int h=1; h < arr.length; h++) {
    result.append(separator);
    result.append(arr[h]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...