2013-05-15 2 views
-1

Я новичок на Android, и я разрабатываю приложение, которое получает некоторую информацию с QR-кода, а затем соединяет php-страницу. Однако приложение сокрушает после того, как он читает QR-код, и logCat дает Fatal Exception AsyncTask # 1, когда я его запускаю.Fatal Exception AsyncTask # 1 at doInBackground()

Вот это doInBackground() коды:

class CreateNewProduct extends AsyncTask<String, String, String> 
    { 
     protected String doInBackground(String... args) 
     { 
      String tc= new String(); 
      tc= "3123"; 

      String no = new String(); 
      no = "3"; 

      /*String tcKimlik = "3123"; 
      String hatNo = "3";*/ 

      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("tc", tc)); 
      params.add(new BasicNameValuePair("no", no)); 

      JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params); 

      try 
      { 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) 
       { 

        //qrCodeText.setText("DONE!"); 
       } 
       else 
       { 
        //qrCodeText.setText("Nope..."); 
       } 
      } 
      catch (JSONException e) 
      { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

    } // End of CreateNewProduct 

CreateNewProduct находится в другом классе, который читает QR-коды, и я называю это как new CreateNewProduct().execute(); после Qr код считывается.

А вот LogCat:

UPDATE:

После того как я добавил http:// и сделал setTexT() как комментарий, ошибка JSON был добавлен в LogCat:

05-16 01:00:08.900: E/JSON Parser(11835): Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 

05-16 01:00:08.900: W/dalvikvm(11835): threadid=14: thread exiting with uncaught exception (group=0x410572a0) 
05-16 01:00:08.910: E/AndroidRuntime(11835): FATAL EXCEPTION: AsyncTask #1 
05-16 01:00:08.910: E/AndroidRuntime(11835): java.lang.RuntimeException: An error occured while executing doInBackground() 
05-16 01:00:08.910: E/AndroidRuntime(11835): at android.os.AsyncTask$3.done(AsyncTask.java:299) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.lang.Thread.run(Thread.java:856) 
05-16 01:00:08.910: E/AndroidRuntime(11835): Caused by: java.lang.NullPointerException 
05-16 01:00:08.910: E/AndroidRuntime(11835): at com.example.yoritreader.MainActivity$CreateNewProduct.doInBackground(MainActivity.java:442) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at com.example.yoritreader.MainActivity$CreateNewProduct.doInBackground(MainActivity.java:1) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
05-16 01:00:08.910: E/AndroidRuntime(11835): ... 5 more 

Спасибо за вашу помощь!

ответ

1

Ошибка была решена, удалив <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> из файла php.

1
Target host must not be null, or set in parameters. scheme=null, host=null, path=www.halilcosgun.com/qrcode.php 

Возможно, вы забыли поместить протокол в URL-адрес своего сайта.

Try с http://www.halilcosgun.com/qrcode.php

https://stackoverflow.com/a/8768930/1296658

+0

После того, как я добавил «http: //» и сделал «setText» в качестве комментария, он добавил еще 2 строки в LogCat – ciyo

+0

'Ошибка анализа данных org.json.JSONException: Значение FilipPudak

+0

Я также использую класс с именем 'JSONParser', чтобы получить' JSONObject'. Может ли ошибка быть в нем? – ciyo

0

Я считаю, что текущая проблема заключается в том, что вам нужно добавить "http://" или тому подобное к вашему url при отправке запроса. Это должно позаботиться о вашей текущей проблеме, IllegalStateException. Ваша следующая проблема будет пытаться получить доступ к UI элементам с фона Thread. Вам нужно переместить строки, где вы называете setText() к onPostExecute() или к Activity методу

Поскольку вы не разрешен доступ UI элементы на фоне этой линии

qrCodeText.setText("DONE!"); 

и любых других, где вы пытаетесь обновление UI даст вам ошибку. Вы можете return success до onPostExecute() и выполнить его так, как все остальные методы AsyncTask работают на UI. Предполагается, что они имеют доступ к этим элементам, как к внутреннему классу Activity или передают ссылку на них в вашем конструкторе.

+0

После того, как я добавил «http: //» и сделал «setText» в качестве комментария, он добавил еще 2 строки в LogCat: E/JSON Parser (11835): Ошибка анализа данных org.json.JSONException: значение ciyo

+0

Пожалуйста, не изменяйте ваш OP ... это будет быть запутанным и бесполезным для других. Вы можете добавить к нему, если у вас возникла проблема, аналогичная исходной проблеме. Если это отдельная проблема, вы можете принять ответ, который помог с исходной проблемой, и опубликовать новый вопрос. – codeMagic

+0

Как вы можете видеть из LogCat FATAL EXCEPTION: AsyncTask # 1 все еще не решен. В LogCat были добавлены только данные анализа ошибок, и я не могу получить ответ для решения проблем. – ciyo

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