so what I'm trying to do is that,i have,a username,a userprofileimage and postimg and i'm trying to insert those values into SQLdatabase i'm first converting images into byte array and then inserting into database but i getting error
java.lang.NullPointerException: Attempt to invoke virtual method 'long Classes.DBController.addRecord(Classes.posts)' on a null object reference.
Here is my code
MainActivity
public class Main2Activity extends AppCompatActivity {
DBController db;
ListView datalist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
public void test(View v) {
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.download);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] nimg = stream.toByteArray();
Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.bc);
ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
bm1.compress(Bitmap.CompressFormat.PNG, 100, stream1);
byte[] nimg1 = stream.toByteArray();
posts obj = new posts();
obj.setUsername("gitesh");
obj.setUserProfileImg(nimg);
obj.setPostImg(nimg1);
long result = db.addRecord(obj);
if(result==-1) {
Log.d("error","error");
}
else {
datalist = (ListView) findViewById(R.id.listview);
db = new DBController(this);
List<posts> contacts = db.getAll();
Adapter adp = new Adapter(this, R.layout.activity_main, contacts);
datalist.setAdapter(adp);
}
}
}
DBController.class
public class DBController implements DBConstants {
DBHandler handler;
SQLiteDatabase db;
public DBController(Context context) {
handler = new DBHandler(context, dname, null, dversion);
}
public void open() {
db = handler.getWritableDatabase();
}
public void close() {
db.close();
}
public long addRecord(posts c) {
open();
ContentValues cv = new ContentValues();
cv.put(c2, c.getUsername());
cv.put(c3, c.getUserProfileImg());
cv.put(c4, c.getPostImg());
long d = db.insert(tname, null, cv);
close();
return d;
}
public List<posts> getAll() {
List<posts> l = new ArrayList<>();
String q = "SELECT * FROM " + tname;
open();
Cursor c = db.rawQuery(q, null);
posts obj = null;
if (c.moveToFirst()) {
do {
obj = new posts();
obj.setUsername(c.getString(1));
obj.setUserProfileImg(c.getBlob(2));
obj.setPostImg(c.getBlob(3));
l.add(obj);
}
while (c.moveToNext());
}
db.close();
return l;
}
}
errors
05-23 23:16:29.034 2900-2900/com.example.gitesh.timeline E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.gitesh.timeline, PID: 2900
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21168)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21168)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long Classes.DBController.addRecord(Classes.posts)' on a null object reference
at com.example.gitesh.timeline.Main2Activity.test(Main2Activity.java:45)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21168)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)