Я хочу найти что-то в Asynctask, но когда пользователь нажимает кнопку Enter, возникает бесконечный цикл для события onKeyUp.

Вот мой код:

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_ENTER:
                String searchObject = tvSearch.getText().toString();
                searchObject = searchObject.replaceAll(" ", "%20");
                AsyncSearchRegion asr = new AsyncSearchRegion(MapActivity.this);
                tvSearch.onEditorAction(EditorInfo.IME_ACTION_DONE);
                asr.execute(searchObject);
                return true;
            default:
                return super.onKeyUp(keyCode, event);
        }
    }

AsyncTask :

@Override
protected ArrayList<Double> doInBackground(String... params) {
    this.region = params[0];
    String url = "http://maps.googleapis.com/maps/api/geocode/json?address="+region+"&sensor=false";

    JSONObject obj = Utilitys.getJSONFromUrl(url);

    //Parse json data
    try {
        String resultStatus = obj.getString("status");
        if(resultStatus.equals("OK")){
            JSONObject locations = obj.getJSONArray("results").getJSONObject(0).getJSONObject("geometry").getJSONObject("location");
            lat = locations.getDouble("lat");
            lot = locations.getDouble("lng");
        }
        coordArray.add(lat);
        coordArray.add(lot);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    return coordArray;
}
0
hassler23 26 Авг 2014 в 18:27
Пожалуйста, опубликуйте свой AsyncTask.
 – 
ToasteR
26 Авг 2014 в 18:30
Добавил AsyncTask @ToasteR
 – 
hassler23
26 Авг 2014 в 18:34

1 ответ

Лучший ответ

Думаю, проблема связана с вызовом этого метода:

tvSearch.onEditorAction(EditorInfo.IME_ACTION_DONE);

Не знаю, зачем вы отправляете это событие в поиск EditText. Если вы пытаетесь скрыть клавиатуру, используйте:

    public static void hideKeyboard(Context context, EditText editText) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
1
MartinCR 26 Авг 2014 в 18:58