Autore Topic: list view e sqlite (crash durante la lettura)  (Letto 155 volte)

Offline gegeuxa

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
list view e sqlite (crash durante la lettura)
« il: 06 Settembre 2016, 14:20:03 CEST »
0
Premetto che sono un autodidatta, quindi non sono espertissimo... sto cercando di creare un activity con una list view che mostri dati presi da un database di stringhe, ma quando cerco di inserire una nuova stringa la app si chiude, ho cercato su internet ma non riesco a capire l'errore....

Logcat:

Codice: [Seleziona]
09-06 14:10:14.403 19433-19433/com.example.eugenioanselmino.myrelation E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                         java.lang.IllegalStateException: Could not execute method of the activity
                                                                                             at android.view.View$1.onClick(View.java:3603)
                                                                                             at android.view.View.performClick(View.java:4103)
                                                                                             at android.view.View$PerformClick.run(View.java:17117)
                                                                                             at android.os.Handler.handleCallback(Handler.java:615)
                                                                                             at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                                             at android.os.Looper.loop(Looper.java:137)
                                                                                             at android.app.ActivityThread.main(ActivityThread.java:4744)
                                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                             at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                                             at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
                                                                                             at dalvik.system.NativeStart.main(Native Method)
                                                                                          Caused by: java.lang.reflect.InvocationTargetException
                                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                             at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                             at android.view.View$1.onClick(View.java:3598)
                                                                                             at android.view.View.performClick(View.java:4103)
                                                                                             at android.view.View$PerformClick.run(View.java:17117)
                                                                                             at android.os.Handler.handleCallback(Handler.java:615)
                                                                                             at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                                             at android.os.Looper.loop(Looper.java:137)
                                                                                             at android.app.ActivityThread.main(ActivityThread.java:4744)
                                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                             at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                                             at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
                                                                                             at dalvik.system.NativeStart.main(Native Method)
                                                                                          Caused by: java.lang.NullPointerException
                                                                                             at com.example.eugenioanselmino.myrelation.ActivityImpegni.aggiungiImpegno(ActivityImpegni.java:34)
                                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                             at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                             at android.view.View$1.onClick(View.java:3598)
                                                                                             at android.view.View.performClick(View.java:4103)
                                                                                             at android.view.View$PerformClick.run(View.java:17117)
                                                                                             at android.os.Handler.handleCallback(Handler.java:615)
                                                                                             at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                                             at android.os.Looper.loop(Looper.java:137)
                                                                                             at android.app.ActivityThread.main(ActivityThread.java:4744)
                                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                             at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                                             at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
                                                                                             at dalvik.system.NativeStart.main(Native Method)


Activity:

Codice (Java): [Seleziona]
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class ActivityImpegni extends Activity{

    private ListView obj;
    DBHelper mydb;
    TextView impegno;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.impegni);

        mydb=new DBHelper(this);
        obj=(ListView)findViewById(R.id.listView);
        ArrayList array_list=mydb.getAllImpegni();
        ArrayAdapter arrayAdapter=new ArrayAdapter(this,R.layout.adapter,array_list);
        obj.setAdapter(arrayAdapter);
    }

    public void aggiungiImpegno(View v){
        impegno=(TextView)findViewById(R.id.textViewAdapter);
        impegno.getText();
        if (impegno!=null)
        {
            mydb.insertImpegno(impegno.toString());
            Toast.makeText(this,"Impegno salvato",Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onPause() {

        super.onPause();
        finish();
    }
}

Classe dell' SQLiteOpenHelper:

Codice (Java): [Seleziona]
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.HashMap;

public class DBHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "MyDBName.db";
    public static final String CONTACTS_TABLE_NAME = "Impegni";
    public static final String CONTACTS_COLUMN_ID = "id";
    public static final String CONTACTS_COLUMN_NAME = "Impegno";
    private HashMap hp;

    public DBHelper(Context context)
    {
        super(context, DATABASE_NAME , null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL("create table Impegni"+"(id integer primary key, Impegno text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL("DROP TABLE IF EXISTS Impegni");
        onCreate(db);
    }

    public boolean insertImpegno (String impegno){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("Impegno",impegno);
        db.insert("Impegni",null,contentValues);
        return true;
    }

    public Cursor getData(int id){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from Impegni where id="+id+"", null );
        return res;
    }

    public int numberOfRows(){
        SQLiteDatabase db = this.getReadableDatabase();
        int numRows = (int) DatabaseUtils.queryNumEntries(db, CONTACTS_TABLE_NAME);
        return numRows;
    }

    public Integer deleteContact (Integer id)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        return db.delete("Impegni", "id = ? ", new String[] { Integer.toString(id) });
    }

    public ArrayList<String> getAllImpegni(){

        ArrayList<String> array_list = new ArrayList<String>();
        hp = new HashMap();
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from Impegni", null );
        res.moveToFirst();

        while(res.isAfterLast() == false){
            array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)));
            res.moveToNext();
        }

        return array_list;
    }

}

L'errore sopraggiunge nel momento in cui schiaccio il pulsante per aggiungere la stringa...
grazie 1000 in anticipo

Post unito: 06 Settembre 2016, 14:47:29 CEST
Mi sono accorto di un errore ne logcat e nell'activity... posto qui quelle aggiornate

Logcat:

Codice: [Seleziona]
/com.example.eugenioanselmino.myrelation E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                         java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
                                                                                             at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
                                                                                             at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
                                                                                             at android.widget.AbsListView.obtainView(AbsListView.java:2271)
                                                                                             at android.widget.ListView.measureHeightOfChildren(ListView.java:1269)
                                                                                             at android.widget.ListView.onMeasure(ListView.java:1181)
                                                                                             at android.view.View.measure(View.java:15323)
                                                                                             at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:622)
                                                                                             at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:404)
                                                                                             at android.view.View.measure(View.java:15323)
                                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
                                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:315)
                                                                                             at android.view.View.measure(View.java:15323)
                                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
                                                                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1421)
                                                                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:698)
                                                                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:579)
                                                                                             at android.view.View.measure(View.java:15323)
                                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
                                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:315)
                                                                                             at android.view.View.measure(View.java:15323)
                                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
                                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:315)
                                                                                             at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2155)
                                                                                             at android.view.View.measure(View.java:15323)
                                                                                             at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1854)
                                                                                             at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1102)
                                                                                             at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1275)
                                                                                             at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
                                                                                             at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4218)
                                                                                             at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
                                                                                             at android.view.Choreographer.doCallbacks(Choreographer.java:555)
                                                                                             at android.view.Choreographer.doFrame(Choreographer.java:525)
                                                                                             at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
                                                                                             at android.os.Handler.handleCallback(Handler.java:615)
                                                                                             at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                                             at android.os.Looper.loop(Looper.java:137)
                                                                                             at android.app.ActivityThread.main(ActivityThread.java:4744)
                                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                             at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                                             at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
                                                                                             at dalvik.system.NativeStart.main(Native Method)
                                                                                          Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
                                                                                             at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
                                                                                             at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 
                                                                                             at android.widget.AbsListView.obtainView(AbsListView.java:2271) 
                                                                                             at android.widget.ListView.measureHeightOfChildren(ListView.java:1269) 
                                                                                             at android.widget.ListView.onMeasure(ListView.java:1181) 
                                                                                             at android.view.View.measure(View.java:15323) 
                                                                                             at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:622) 
                                                                                             at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:404) 
                                                                                             at android.view.View.measure(View.java:15323) 
                                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924) 
                                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:315) 
                                                                                             at android.view.View.measure(View.java:15323) 
                                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924) 
                                                                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1421) 
                                                                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) 
                                                                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:579) 
                                                                                             at android.view.View.measure(View.java:15323) 
                                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924) 
                                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:315) 
                                                                                             at android.view.View.measure(View.java:15323) 
                                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924) 
                                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:315) 
                                                                                             at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2155) 
                                                                                             at android.view.View.measure(View.java:15323) 
                                                                                             at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1854) 
                                                                                             at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1102) 
                                                                                             at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1275) 
                                                                                             at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 
                                                                                             at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4218) 
                                                                                             at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
                                                                                             at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
                                                                                             at android.view.Choreographer.doFrame(Choreographer.java:525) 
                                                                                             at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
                                                                                             at android.os.Handler.handleCallback(Handler.java:615) 
                                                                                             at android.os.Handler.dispatchMessage(Handler.java:92) 
                                                                                             at android.os.Looper.loop(Looper.java:137) 
                                                                                             at android.app.ActivityThread.main(ActivityThread.java:4744) 
                                                                                             at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                             at java.lang.reflect.Method.invoke(Method.java:511) 
                                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                                                             at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
                                                                                             at dalvik.system.NativeStart.main(Native Method) 

Activity:

Codice (Java): [Seleziona]
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class ActivityImpegni extends Activity{

    private ListView obj;
    DBHelper mydb;
    TextView impegno;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.impegni);

        mydb=new DBHelper(this);
        obj=(ListView)findViewById(R.id.listView);
        ArrayList array_list=mydb.getAllImpegni();
        ArrayAdapter arrayAdapter=new ArrayAdapter(this,R.layout.adapter,array_list);
        obj.setAdapter(arrayAdapter);
    }

    public void aggiungiImpegno(View v){
        impegno=(TextView)findViewById(R.id.editTextImpegni);
        mydb.insertImpegno(impegno.getText().toString());
        Toast.makeText(this,"Impegno salvato",Toast.LENGTH_LONG).show();
        ArrayList array_list=mydb.getAllImpegni();
        ArrayAdapter arrayAdapter=new ArrayAdapter(this,R.layout.adapter,array_list);
        obj.setAdapter(arrayAdapter);
        arrayAdapter.notifyDataSetChanged();
    }



    @Override
    protected void onPause() {

        super.onPause();
        finish();
    }
}
« Ultima modifica: 06 Settembre 2016, 14:47:29 CEST da gegeuxa, Reason: Merged DoublePost »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:list view e sqlite (crash durante la lettura)
« Risposta #1 il: 06 Settembre 2016, 21:00:02 CEST »
0
sicuramente l' override di onPause è errato. Non ha nessun senso chiamare il onFinish