Null Pointer Exception Error

  • Replies:2
rory hayes
  • Forum posts: 1

Nov 7, 2014, 9:47:16 PM via Website

Hi guys, I am having some trouble today with my app, I am very new to android and java and am having some trouble. When ever I try to run my app I get a nullPointerException. I have read up on them online but having a little trouble finding it in my code. I would be very great full if someone code help!

This is my main activity code where i am getting the error

package com.example.rory.dbtest;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.os.Handler;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import com.pinchtapzoom.R;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class MyActivity extends Activity {

private CustomCursorAdapter customAdapter;
private com.example.rory.dbtest.DBAdapter databaseHelper;
public ListView list1;



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

    list1 = (ListView)findViewById(R.id.data_list);

    Button addBtn = (Button)findViewById(R.id.add);
    addBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent i = new Intent(MyActivity.this, addassignment.class);
            startActivity(i);
        }
    });

    Button deleteBtn = (Button)findViewById(R.id.delete);
    deleteBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent i = new Intent(MyActivity.this, Delete.class);
            startActivity(i);
        }
    });

    Button updateBtn = (Button)findViewById(R.id.update);
    updateBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent i = new Intent(MyActivity.this, Update.class);
            startActivity(i);
        }
    });


    try {
        String destPath = "/data/data/" + getPackageName() + "/databases/AssignmentDB";
        File f = new File(destPath);
        if (!f.exists()) {
            CopyDB( getBaseContext().getAssets().open("mydb"),
                    new FileOutputStream(destPath));
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


    new Handler().post(new Runnable() {
        @Override
        public void run() {
            databaseHelper.open();
            customAdapter = new CustomCursorAdapter(MyActivity.this, databaseHelper.getAllRecords());
            list1.setAdapter(customAdapter);
        }
    });




    /*
    new android.os.Handler().post(new Runnable() {
        @Override
        public void run() {
            customAdapter = new CustomCursorAdapter(MyActivity.this, db.getAllRecords());
            list1.setAdapter(customAdapter);
        }
    });
    */

    /*
    ArrayList<String> data_list=new ArrayList<String>();
    ListView lv=(ListView)findViewById(R.id.listView1);
    Cursor c = db.getAllRecords();

    if (c.moveToFirst())
    {
        do {
            data_list.add(c.getString(2));
            //data_list.add(c.getString(1));
            //DisplayRecord(c);
        } while (c.moveToNext());
    }
    ArrayAdapter<String> aa=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, data_list);
    lv.setAdapter(aa);
    */

}

private class DBAdapter extends BaseAdapter {
    private LayoutInflater mInflater;
    //private ArrayList<>

    @Override
    public int getCount() {

        return 0;
    }

    @Override
    public Object getItem(int arg0) {

        return null;
    }

    @Override
    public long getItemId(int arg0) {

        return 0;
    }

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {

        return null;
    }

}

public void CopyDB(InputStream inputStream, OutputStream outputStream)
        throws IOException {
    //---copy 1K bytes at a time---
    byte[] buffer = new byte[1024];
    int length;
    while ((length = inputStream.read(buffer)) > 0) {
        outputStream.write(buffer, 0, length);
    }
    inputStream.close();
    outputStream.close();
}



public void DisplayRecord(Cursor c)
{
   Toast.makeText(this,
            "id: " + c.getString(0) + "\n" +
                    "Item: " + c.getString(1) + "\n" +
                    "Litres:  " + c.getString(2),
            Toast.LENGTH_SHORT).show();
}

}

This is the Database class that i am using

package com.example.rory.dbtest;

/**
 * Created by Rory on 02/11/2014.
 */
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBAdapter {
public static final String KEY_ROWID = "id";
public static final String KEY_ITEM = "item";
public static final String KEY_LITRES = "litres";
private static final String TAG = "DBAdapter";

private static final String DATABASE_NAME = "DripDrop";
private static final String DATABASE_TABLE = "assignments";
private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE =
        "create table if not exists assignments (id integer primary key autoincrement, "
                + "item VARCHAR not null, litres date );";

private final Context context;

private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DBAdapter(Context ctx)
{
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper
{
    DatabaseHelper(Context context)
    {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        try {
            db.execSQL(DATABASE_CREATE);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS contacts");
        onCreate(db);
    }
}

//---opens the database---
public DBAdapter open() throws SQLException
{
    db = DBHelper.getWritableDatabase();
    return this;
}

//---closes the database---
public void close()
{
    DBHelper.close();
}

//---insert a record into the database---
public long insertRecord(String item, String litres)
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_ITEM, item);
    initialValues.put(KEY_LITRES, litres);
    return db.insert(DATABASE_TABLE, null, initialValues);
}

//---deletes a particular record---
public boolean deleteContact(long rowId)
{
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}

//---retrieves all the records---
public Cursor getAllRecords()
{
    return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_ITEM,
            KEY_LITRES}, null, null, null, null, null);
}



//---retrieves a particular record---
public Cursor getRecord(long rowId) throws SQLException
{
    Cursor mCursor =
            db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                            KEY_ITEM, KEY_LITRES},
                    KEY_ROWID + "=" + rowId, null, null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

//---updates a record---
public boolean updateRecord(String item, String litres)
{
    db.execSQL("UPDATE "+DATABASE_TABLE+" SET "+KEY_LITRES+"='"+litres+"' WHERE "+KEY_ITEM+"='"+item+"'");
    return true;
}

/*
public boolean updateRecord(String item, String litres)
{
    ContentValues args = new ContentValues();
    args.put(KEY_ITEM, item);
    args.put(KEY_LITRES, litres);
    return db.update(DATABASE_TABLE, args, KEY_ITEM+ "=" + item, null) > 0;
}
*/

}

Reply
Kevin Berendsen
  • Forum posts: 118

Nov 10, 2014, 11:52:08 AM via Website

Could you post the entire nullpointerexception? That'd be very useful.

Reply
Ashish Tripathi
  • Forum posts: 211

Nov 13, 2014, 12:21:00 PM via Website

hey
put the cursor in try catch and share the logcat for better help

Reply