2013-07-16 5 views
0

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

Я получаю эту ошибку из листинга активности (последний выполнен) Check picture to see error

Я не очень понятно, почему это происходит, но это выход LogCat. Все, что я пытаюсь сделать, заключается в следующем:

HttpResponse response = httpClient.execute(httpPost); 
      HttpEntity resEntity = response.getEntity(); 

      if (resEntity != null) { 

       String responseStr = EntityUtils.toString(resEntity).trim(); 
       Log.v(TAG, "Response: " + responseStr); 
        TextView responseSimpleText = new TextView(this); 
        responseSimpleText.setText(responseStr.toString()); 
       // you can add an if statement here and do other actions based on the response 

       setContentView(responseSimpleText); 
      }else{ 
       Log.v("ListingAcitivty.java", "Response is Null"); 
      } 

Может кто-нибудь указать, что происходит? Я использую AsyncTask, и данные успешно вставляются.

+0

Я полагаю, что это часть 'doInBackground' метода' AsynTask'. Обратите внимание, что этот метод не позволяет вам обновлять представление (вы вызываете 'setContentView (responseSimpleText);' внутри этого метода). Его потому, что он выполняется на фоне потока, а не на потоке пользовательского интерфейса. –

+0

Я никогда не знал этого! Благодарю. Лучше всего сделать в этом случае? –

+1

Обновите свой просмотр в 'onPreExecute()', 'onProgressUpdate (Progress ...)' или 'onPostExecute (Result)'. Более подробную информацию вы найдете здесь (http://developer.android.com/reference/android/os/AsyncTask.html) –

ответ

1

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

Поскольку задачи, которые вы запускаете в потоке из пула потоков, не работают в потоке пользовательского интерфейса, у них нет доступа к объектам пользовательского интерфейса.

От: https://developer.android.com/training/multiple-threads/communicate-ui.html

Эта страница также объясняет, как следует подходить этот сценарий.

+0

Как вы можете исправить это в отношении моего кода? –

Смежные вопросы