0

I would want to save the image on my imageview onto a database but I am unable to save the image on my imageview into the database.

MainActivity.java

protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        switch (requestCode) {
            case REQUEST_CODE:
                if (data != null) {
                    int id = dbHandler.getEntriesCount();
                    long time = System.currentTimeMillis();
                    SimpleDateFormat dayTime = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
                    String date = dayTime.format(new Date(time));
                    String title = data.getStringExtra("Title");
                    String passage = data.getStringExtra("Passage");
                    Uri imageUri = Uri.parse(data.getStringExtra("imageUri"));
                    Entry entry = new Entry(id, title, passage, imageUri, date);
                    dbHandler.createEntry(entry);
                    Entry Entry = dbHandler.getEntry(id);
                    entryList.add(Entry);
                    EntryListadapter.notifyDataSetChanged();

Acitivity_Write.Java

SaveBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent data = new Intent();
            data.putExtra("Title", TitleTxt.getText().toString());
            data.putExtra("Passage", WriteTxt.getText().toString());
            data.putExtra("imageUri", Uri.parse(EntryImgImageView.toString()));
            setResult(RESULT_OK, data);
            finish();
            Toast.makeText(getApplicationContext(), "Entry Added", Toast.LENGTH_SHORT).show();

Entry.Java

public class Entry {

public String _title, _passage;
public Uri _imageUri;
public String _date;
public int _id;

public Entry (int id, String title, String passage, Uri imageUri, String date) {
    _id = id;
    _title = title;
    _passage = passage;
    _imageUri = imageUri;
    _date = date;
}

public int getId() { return _id; }
public String getTitle() { return _title; }
public String getPassage() { return _passage; }
public Uri getImageUri() { return  _imageUri; }
public String getDate() { return _date; }
}

DatabaseHandler.java

public class DatabaseHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;

public static final String DATABASE_NAME = "entriesManager",
TABLE_ENTRIES = "entries",
KEY_ID = "id",
KEY_TITLE = "title",
KEY_PASSAGE = "passage",
KEY_IMAGEURI = "imageUri",
KEY_DATE="date";


public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_ENTRIES + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_TITLE + " TEXT," + KEY_PASSAGE + " TEXT," + KEY_IMAGEURI + " URI," + KEY_DATE + " TEXT)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_ENTRIES);

    onCreate(db);
}

public void createEntry(Entry entry) {
    SQLiteDatabase db = getWritableDatabase();

    ContentValues values = new ContentValues();


    values.put(KEY_ID,entry.getId());
    values.put(KEY_TITLE, entry.getTitle());
    values.put(KEY_PASSAGE, entry.getPassage());
    values.put(KEY_IMAGEURI, entry.getImageUri().toString());
    values.put(KEY_DATE, entry.getDate());

    db.insert(TABLE_ENTRIES, null, values);
    db.close();
}

Error

12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: FATAL EXCEPTION: main 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: Process: unipersonalinc.mypersonalediary, PID: 3217 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=100, result=-1, data=Intent { (has extras) }} to activity {unipersonalinc.mypersonalediary/unipersonalinc.mypersonalediary.MainActivity}: java.lang.NullPointerException: uriString 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at android.app.ActivityThread.deliverResults(ActivityThread.java:3699) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at android.app.ActivityThread.-wrap16(ActivityThread.java) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: Caused by: java.lang.NullPointerException: uriString 12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at android.net.Uri$StringUri.

12-16 03:11:09.210 3217-3217/unipersonalinc.mypersonalediary E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Mi-Creativity
  • 9,554
  • 10
  • 38
  • 47
  • 2
    Possible duplicate of [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – 323go Dec 16 '15 at 03:24
  • What is `EntryImgImageView` from `EntryImgImageView.toString()`? you got `NullPointerException` with this line. So, try to change `EntryImgImageView.toString()` with your image path `(Uri)` – NamNH Dec 16 '15 at 03:27
  • Without knowing what EntryImageView is, I cannot give you a clear answer. If the image you are talking about is loaded from the internet, you need to save it as a file on external / internal storage and save the path (uri) to it on the database – Much Overflow Dec 16 '15 at 04:01
  • have you solved this problem ? or still there is some issue left ? – Shree Krishna Jan 21 '16 at 14:00

1 Answers1

0

The proper way of saving Images is not inside the database. Save the name of the image in database and write the Image in app directory with the same name.

To Retrieve the image Read the image with the name and set that to your ImageView.

Shree Krishna
  • 8,474
  • 6
  • 40
  • 68