Autore Topic: Conversione SimpleHeaderTutorial  (Letto 503 volte)

Offline Dani77

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • daniele9475
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    Windows 8
Conversione SimpleHeaderTutorial
« il: 26 Luglio 2014, 18:10:53 CEST »
0
Salve a tutti ... ho ripreso il file SimpleHeadertUTutorial realizzato per eclipse da PinaBello e lo sto convertendo per Android Studio..
Ho importato il progetto rilevo subito un errore ...

Posto il LogCat :

07-26 12:04:12.508    1156-1156/it.pinabello.android.tutorial W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb2a57ba8)
07-26 12:04:12.538    1156-1156/it.pinabello.android.tutorial E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: it.pinabello.android.tutorial, PID: 1156
    java.lang.RuntimeException: Unable to start activity ComponentInfo{it.pinabello.android.tutorial/it.pinabello.android.tutorial.SimpleListActivity}: java.lang.NullPointerException: lock == null
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException: lock == null
            at java.io.Reader.<init>(Reader.java:64)
            at java.io.InputStreamReader.<init>(InputStreamReader.java:122)
            at java.io.InputStreamReader.<init>(InputStreamReader.java:59)
            at it.pinabello.android.tutorial.SimpleHeaderTutorialDB.onCreate(SimpleHeaderTutorialDB.java:39)
            at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
            at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188)
            at it.pinabello.android.tutorial.SimpleListActivity.onCreate(SimpleListActivity.java:20)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
07-26 12:04:36.548    1156-1156/it.pinabello.android.tutorial I/Process﹕ Sending signal. PID: 1156 SIG: 9


Ho notato che nell'activity SimpleListActivity  android studio dice:  startManagingCursor(cursor);  is deprecated
potrebbe essere questo il problema?
Grazie :)

Offline Dani77

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • daniele9475
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy
  • Sistema operativo:
    Windows 8
Re:Conversione SimpleHeaderTutorial
« Risposta #1 il: 27 Luglio 2014, 19:11:37 CEST »
0
Secondo me riguarda questo passo ....

 
Codice (XML): [Seleziona]
  Caused by: java.lang.NullPointerException: lock == null
nel codice ...

 
Codice (XML): [Seleziona]
  package it.pinabello.android.tutorial;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;



public class SimpleHeaderTutorialDB extends SQLiteOpenHelper {
       
        public final static String DB_NAME = "simpleHeaderTutorial.db";
        private final static  int DATABASE_VERSION = 5;
       
        public SimpleHeaderTutorialDB(Context context) {
                super(context, DB_NAME, null, DATABASE_VERSION);
        }
       
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                db.execSQL("DROP TABLE " + Spesa.TABLE_NAME);
                db.execSQL("CREATE TABLE " + Spesa.TABLE_NAME + " ("
                + Spesa.ID + " INTEGER PRIMARY KEY,"
                + Spesa.NAME + " TEXT,"
                + Spesa.TYPE + " TEXT"
                + ");");
                load(db, new InputStreamReader(this.getClass().getResourceAsStream("dati.csv")));
        }
       
        @Override
        public void onCreate(SQLiteDatabase db) {
                db.execSQL("CREATE TABLE " + Spesa.TABLE_NAME + " ("
                + Spesa.ID + " INTEGER PRIMARY KEY,"
                + Spesa.NAME + " TEXT,"
                + Spesa.TYPE + " TEXT"
                + ");");
                load(db, new InputStreamReader(this.getClass().getResourceAsStream("dati.csv")));
        }
       
        private void load(SQLiteDatabase db, InputStreamReader in) {
                BufferedReader reader = new BufferedReader(in);
                try {
                        String line = null;
                        while ( (line = reader.readLine()) != null ) {
                                db.insert(Spesa.TABLE_NAME, null, Spesa.getContentValues(line));
                        }
                        reader.close();
                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        if (in != null) {
                                try {
                                        in.close();
                                } catch (IOException e) {
                                }
                        }
                }
        }

}

Esiste un'altro modo di porre questo codice :
                                 
                   
Codice (XML): [Seleziona]
          if (in != null) {
                                try {
                                        in.close();
                                } catch (IOException e) {
                                }
                        }

credo sia qui l'errore ... qualcuno sa come posso inserire meglio questa funzione???