Мое приложение вылетает при попытке что-то сделать с перехваченным исключением

Ok

try {

            Log.d("request!", "starting");
            // getting product details by making HTTP request
            JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST",
                    params);

            // check your log for json response
            Log.d("Login attempt", json.toString());

            }
        } catch (JSONException e) {

// ОШИБКА ПРИ ИНЕРТИРОВАНИИ КОДА ЗДЕСЬ!.

}<code>

Привет, ребята! Я просто хочу знать, почему мое приложение падает, когда я пишу код в указанном месте (см. выше). Если я оставлю это поле пустым, ничего не произойдет...

Дело в том, что я хочу показать

Toast.makeText(MainActivity.this, "Не удалось подключиться к серверу", Toast.LENGTH_LONG).show();

Как вы думаете, почему? заранее спасибо


person frankelot    schedule 24.09.2013    source источник
comment
Выполните очистку проекта (Project -> Clean) и повторите попытку. Если он снова выйдет из строя, пожалуйста, опубликуйте сообщения logcat.   -  person prijupaul    schedule 24.09.2013
comment
Пожалуйста, опубликуйте весь соответствующий код и logcat. Из этого у нас нет возможности узнать, что происходит.   -  person codeMagic    schedule 24.09.2013


Ответы (2)


Я предполагаю, потому что вы ошибаетесь

"Не удалось подключиться к серверу"

вы пытаетесь совершать сетевые вызовы, что означает, что ваш код находится в каком-то потоке? Вы не можете касаться элементов пользовательского интерфейса внутри основного потока, поэтому переместите:

Toast.makeText(MainActivity.this, "Couldn't reach the server", Toast.LENGTH_LONG).show();

В метод postExecute() AsyncTask или используйте Обработчик

Из документов.

Не обращайтесь к инструментарию пользовательского интерфейса Android из-за пределов потока пользовательского интерфейса.

person nedaRM    schedule 24.09.2013
comment
Дааа :) сработало, спасибо, ребята. Я новичок в андроиде. Я не могу получить доступ к элементам пользовательского интерфейса, если я не в основном потоке! понятно! - person frankelot; 24.09.2013

Вы случайно не пытаетесь получить доступ к элементам пользовательского интерфейса из-за пределов основного потока? Попробуйте использовать Log.v вместо Toast и посмотрите, поможет ли это.

person VJ Vélan Solutions    schedule 24.09.2013
comment
Дааа :) сработало, спасибо, ребята. Я новичок в андроиде. Я не могу получить доступ к элементам пользовательского интерфейса, если я не в основном потоке! понятно! - person frankelot; 24.09.2013