Autore Topic: Crash App dovuto ad Async Task per lettura su DB SQL remoto  (Letto 625 volte)

Offline ilthebest

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Crash App dovuto ad Async Task per lettura su DB SQL remoto
« il: 12 Febbraio 2014, 11:57:52 CET »
0
Salve,
appena lancio l'app crasha.
Ecco il Logcat per chi riesce a capirlo:

02-12 12:14:26.284: E/JSON Parser(10758): Error parsing data org.json.JSONException: Value [{"data":"2014-01-27 17:35:55","commento":"ciao:img1:","idutente":"andrea"},{"data":"2013-12-29 11:52:02","commento":"Andiamo a berci una birra insieme :img5:","idutente":"Federico"},{"data":"2013-12-29 11:48:41","commento":":img1: abcdefghilmnopq","idutente":"Stefano"},{"data":"2013-12-24 11:43:01","commento":"V for Victory","idutente":"Stefan_Avramovic"},{"data":"2013-12-23 19:07:43","commento":"Good work! :img5:","idutente":"dalla92"},{"data":"2013-12-23 12:37:30","commento":"Funzioner&agrave;? <br \/>\r\n&lt;script&gt; alert(&quot;ciao&quot;); &lt;\/script&gt;<br \/>\r\ne cos&igrave;?<br \/>\r\n&lt;script&gt; ","idutente":"scinny"},{"data":"2013-12-21 17:30:46","commento":"viva la gnocca zio porcone!:img8:","idutente":"romoaldo"},{"data":"2013-12-20 17:28:49","commento":"Web-app appena creata! <br \/>\r\n:img11:","idutente":"admin"}] of type org.json.JSONArray cannot be converted to JSONObject
02-12 12:14:26.284: E/AndroidRuntime(10758): FATAL EXCEPTION: AsyncTask #1
02-12 12:14:26.284: E/AndroidRuntime(10758): java.lang.RuntimeException: An error occured while executing doInBackground()
02-12 12:14:26.284: E/AndroidRuntime(10758):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at java.lang.Thread.run(Thread.java:841)
02-12 12:14:26.284: E/AndroidRuntime(10758): Caused by: java.lang.NullPointerException
02-12 12:14:26.284: E/AndroidRuntime(10758):    at com.example.guestbook.MainActivity$LoadAllComments.doInBackground(MainActivity.java:110)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at com.example.guestbook.MainActivity$LoadAllComments.doInBackground(MainActivity.java:1)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-12 12:14:26.284: E/AndroidRuntime(10758):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-12 12:14:26.284: E/AndroidRuntime(10758):    ... 4 more
02-12 12:14:26.667: E/WindowManager(10758): Activity com.example.guestbook.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{422f47d0 V.E..... R......D 0,0-684,192} that was originally added here
02-12 12:14:26.667: E/WindowManager(10758): android.view.WindowLeaked: Activity com.example.guestbook.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{422f47d0 V.E..... R......D 0,0-684,192} that was originally added here
02-12 12:14:26.667: E/WindowManager(10758):    at android.view.ViewRootImpl.<init>(ViewRootImpl.java:345)
02-12 12:14:26.667: E/WindowManager(10758):    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239)
02-12 12:14:26.667: E/WindowManager(10758):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
02-12 12:14:26.667: E/WindowManager(10758):    at android.app.Dialog.show(Dialog.java:281)
02-12 12:14:26.667: E/WindowManager(10758):    at com.example.guestbook.MainActivity$LoadAllComments.onPreExecute(MainActivity.java:97)
02-12 12:14:26.667: E/WindowManager(10758):    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
02-12 12:14:26.667: E/WindowManager(10758):    at android.os.AsyncTask.execute(AsyncTask.java:534)
02-12 12:14:26.667: E/WindowManager(10758):    at com.example.guestbook.MainActivity.onCreate(MainActivity.java:71)
02-12 12:14:26.667: E/WindowManager(10758):    at android.app.Activity.performCreate(Activity.java:5133)
02-12 12:14:26.667: E/WindowManager(10758):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-12 12:14:26.667: E/WindowManager(10758):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
02-12 12:14:26.667: E/WindowManager(10758):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
02-12 12:14:26.667: E/WindowManager(10758):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
02-12 12:14:26.667: E/WindowManager(10758):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
02-12 12:14:26.667: E/WindowManager(10758):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 12:14:26.667: E/WindowManager(10758):    at android.os.Looper.loop(Looper.java:137)
02-12 12:14:26.667: E/WindowManager(10758):    at android.app.ActivityThread.main(ActivityThread.java:5103)
02-12 12:14:26.667: E/WindowManager(10758):    at java.lang.reflect.Method.invokeNative(Native Method)
02-12 12:14:26.667: E/WindowManager(10758):    at java.lang.reflect.Method.invoke(Method.java:525)
02-12 12:14:26.667: E/WindowManager(10758):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
02-12 12:14:26.667: E/WindowManager(10758):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-12 12:14:26.667: E/WindowManager(10758):    at dalvik.system.NativeStart.main(Native Method)


Chi riesce ad aiutarmi?
« Ultima modifica: 12 Febbraio 2014, 12:44:37 CET da ilthebest »
L'arte è un lavoro sporco, ma qualcuno lo deve pur fare!

CTRL + SHIFT + O: vi risolverà molti problemi!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Crash App dovuto ad Async Task per lettura su DB SQL remoto
« Risposta #1 il: 12 Febbraio 2014, 14:31:58 CET »
0
Ecco il Logcat per chi riesce a capirlo:

Senza codice la vedo molto ardua.

Se puoi postarlo, è molto importante che tu evidenzi le righe (di MainActivity.java) che sono citate nel LogCat.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ilthebest

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Crash App dovuto ad Async Task per lettura su DB SQL remoto
« Risposta #2 il: 12 Febbraio 2014, 14:48:49 CET »
0
Codice (Java): [Seleziona]
 protected String doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_all_comments, "GET", params);
 
            // Check your log cat for JSON reponse
           // Log.d("All Comments: ", json.toString());
 
            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(TAG_SUCCESS);
 
                if (success == 1) {
                    // products found
                    // Getting Array of Products
                    comments = json.getJSONArray(TAG_COMMENTS);
 
                    // looping through All Products
                    for (int i = 0; i < comments.length(); i++) {
                        JSONObject c = comments.getJSONObject(i);
 
                        // Storing each json item in variable
                        String nick = c.getString(TAG_NICK);
                        String data=c.getString(TAG_DATA);
                        String latitudine=c.getString(TAG_LATITUDINE);
                        String longitudine=c.getString(TAG_LONGITUDINE);
                       
                        String commento = c.getString(TAG_COMMENTO);
                       
                       
 
                        // creating new HashMap
                        HashMap<String, String> map = new HashMap<String, String>();
 
                        // adding each child node to HashMap key => value
                        map.put(TAG_NICK, nick);
                        map.put(TAG_COMMENTO, commento);
                       // map.put(TAG_POSIZIONE, posizione); usa geocoding location
                        map.put(TAG_DATA, data);
                        // adding HashList to ArrayList
                        commentsList.add(map);
                    }
                }
                else {
                    // no comments found
                    // Launch Add New Comment Activity
                    Intent i = new Intent(getApplicationContext(),NewCommentActivity.class);
                    // Closing all previous activities
                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                }
            } catch (JSONException e) {
               
                e.printStackTrace();
            }
 
            return null;
        }
« Ultima modifica: 12 Febbraio 2014, 14:50:31 CET da ilthebest »
L'arte è un lavoro sporco, ma qualcuno lo deve pur fare!

CTRL + SHIFT + O: vi risolverà molti problemi!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Crash App dovuto ad Async Task per lettura su DB SQL remoto
« Risposta #3 il: 12 Febbraio 2014, 15:10:55 CET »
0
Se puoi postarlo, è molto importante che tu evidenzi le righe (di MainActivity.java) che sono citate nel LogCat.


E qual'è di preciso la riga 110 di MainActivity.java?


Citazione
02-12 12:14:26.284: E/AndroidRuntime(10758): Caused by: java.lang.NullPointerException
02-12 12:14:26.284: E/AndroidRuntime(10758):    at com.example.guestbook.MainActivity$LoadAllComments.doInBackground(MainActivity.java:110)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ilthebest

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Crash App dovuto ad Async Task per lettura su DB SQL remoto
« Risposta #4 il: 12 Febbraio 2014, 15:35:50 CET »
0

E qual'è di preciso la riga 110 di MainActivity.java?

Log.d("All Comments: ", json.toString());
L'arte è un lavoro sporco, ma qualcuno lo deve pur fare!

CTRL + SHIFT + O: vi risolverà molti problemi!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Crash App dovuto ad Async Task per lettura su DB SQL remoto
« Risposta #5 il: 12 Febbraio 2014, 15:53:42 CET »
0
Se è veramente quella a generare l'exception, commentala e riprova
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ilthebest

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Crash App dovuto ad Async Task per lettura su DB SQL remoto
« Risposta #6 il: 12 Febbraio 2014, 16:05:44 CET »
0
Mi dà un problema simile più avanti sulla variabile success, ma credo che il punto sia che non comunichi bene con il file php, che serializza i dati.

Questo è il codice PHP

<?php
include ('connessione.php');
 
/*$q=mysql_query("SELECT idutente,commento,data FROM messaggio ORDER BY data DESC");
while($e=mysql_fetch_assoc($q))
        $output[]=$e;
 
print(json_encode($output));
 
mysql_close();*/






//initial query
$query = "SELECT idutente,commento,data FROM messaggio ORDER BY data DESC";

//execute query
try {
    $stmt   = $db->prepare($query);
    $result = $stmt->execute($query_params);
}
catch (PDOException $ex) {
    $response["success"] = 0;
    $response["message"] = "Database Error!";
    die(json_encode($response));
}

// Finally, we can retrieve all of the found rows into an array using fetchAll
$rows = $stmt->fetchAll();


if ($rows) {
    $response["success"] = 1;
    $response["message"] = "Post Available!";
    $response["comments"]   = array();
   
    foreach ($rows as $row) {
        $comments             = array();

        $comments["nick"] = $row["idutente"];
        $comments["data"]    = $row["data"];
        $comments["commento"]  = $row["commento"];
       
       
        //update our repsonse JSON data
        array_push($response["comments"], $comments);
    }
   
    // echoing JSON response
    echo json_encode($response);
   
   
} else {
    $response["success"] = 0;
    $response["message"] = "No Post Available!";
    die(json_encode($response));
}

?>



idee?

Post unito: 12 Febbraio 2014, 18:17:27 CET
ho risolto. In pratica nel file Php mi mancava di aggiungere un nome al file JSON.


$commenti = array("comments"=>$commento);
« Ultima modifica: 12 Febbraio 2014, 18:17:27 CET da ilthebest, Reason: Merged DoublePost »
L'arte è un lavoro sporco, ma qualcuno lo deve pur fare!

CTRL + SHIFT + O: vi risolverà molti problemi!