mercredi 15 juillet 2015

Android application stops working when i try to retrieve data from database

**This is my code and Log cat How can i resolve the issue? I want to make textviews at runtime using subject name as the text. As soon as i click on the update attendance button the application stops working.

         SqliteDatabase.java
          package com.example.attendancemanager2;

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

  public class SqliteDatabase extends SQLiteOpenHelper{
 SQLiteDatabase database;
 static int a=1;
 public SqliteDatabase(Context context) {
    super(context,"SqliteDatabase" , null, a++);
    // TODO Auto-generated constructor stub
 }

 @Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL("create table AttendanceDatabase (Id int ,Subject text not null unique,Num int,Den int )");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}
public void addData(int Id,String sub,int num,int den)
{
    database=this.getWritableDatabase();
    ContentValues contentValues=new ContentValues();
    contentValues.put("Id",Id);
    contentValues.put("Subject",sub);
    contentValues.put("Num",num);
    contentValues.put("Den",den);
    database.insert("AttendanceDatabase", null,contentValues);
}
public Cursor showData() {
    Cursor cursor;
    cursor=database.query("AttendanceDatabase",new String[]{"Id","Subject","Num","Den"} , null,null,null,null,null);
    return cursor;
}

}

             Activity2.java

public class Activity2 extends Activity implements OnClickListener{
private static final int MY_BUTTON = 9000,MY_BUTTON2 = 9002;
static int id=0;
LinearLayout ll;
SqliteDatabase db2;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.design2);
    db2=new SqliteDatabase(getApplicationContext());
    ll=(LinearLayout)findViewById(R.id.linearLayout5);
    cursor=db2.showData();
    cursor.moveToFirst();
    for (int i = 0; i < cursor.getCount(); i++) {
        int x=cursor.getInt(cursor.getColumnIndexOrThrow("Id"));
        String str1=cursor.getString(cursor.getColumnIndexOrThrow("Username"));
        int y=cursor.getInt(cursor.getColumnIndexOrThrow("Num"));
        int z=cursor.getInt(cursor.getColumnIndexOrThrow("Den"));
        ++i;    
        Toast.makeText(getApplicationContext(),"Row retrieved"+i,Toast.LENGTH_LONG).show();
        TextView textView = new TextView(this);
        //textView.setText(str1);
        //textView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            //  LayoutParams.WRAP_CONTENT));
        textView.setId(++id);
        ll.addView(textView);
        cursor.moveToNext();
        --i;
    }
    Button b = new Button(this);
    b.setText("Back");
    b.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    b.setId(++id);
    ll.addView(b);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i=new Intent(getApplicationContext(),MainActivity.class);
            startActivity(i);       
        }
    });
}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub


}

}

          07-15 23:50:42.076: I/dalvikvm(866): threadid=3: reacting to   signal 3
          07-15 23:50:42.316: I/dalvikvm(866): Wrote stack traces to  '/data/anr/traces.txt'
          07-15 23:50:42.436: D/gralloc_goldfish(866): Emulator without GPU  emulation detected.
         07-15 23:50:44.847: D/AndroidRuntime(866): Shutting down VM
         07-15 23:50:44.847: W/dalvikvm(866): threadid=1: thread exiting  with uncaught exception (group=0x409bf1f8)
         07-15 23:50:44.865: E/AndroidRuntime(866): FATAL EXCEPTION: main
         07-15 23:50:44.865: E/AndroidRuntime(866):  java.lang.RuntimeException: Unable to start activity     ComponentInfo{com.example.attendancemanager2/com.example.attendancemanager2.Acti vity2}: java.lang.NullPointerException
         07-15 23:50:44.865: E/AndroidRuntime(866):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at  android.app.ActivityThread.access$600(ActivityThread.java:123)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at android.os.Handler.dispatchMessage(Handler.java:99)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at android.os.Looper.loop(Looper.java:137)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at android.app.ActivityThread.main(ActivityThread.java:4424)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at  java.lang.reflect.Method.invokeNative(Native Method)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at java.lang.reflect.Method.invoke(Method.java:511)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at  dalvik.system.NativeStart.main(Native Method)
         07-15 23:50:44.865: E/AndroidRuntime(866): Caused by: java.lang.NullPointerException
         07-15 23:50:44.865: E/AndroidRuntime(866):     at  com.example.attendancemanager2.SqliteDatabase.showData(SqliteDatabase.java:38)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at com.example.attendancemanager2.Activity2.onCreate(Activity2.java:28)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at android.app.Activity.performCreate(Activity.java:4466)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
         07-15 23:50:44.865: E/AndroidRuntime(866):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
         07-15 23:50:44.865: E/AndroidRuntime(866):     ... 11 more
         07-15 23:50:45.266: I/dalvikvm(866): threadid=3: reacting to signal 3
        07-15 23:50:45.286: I/dalvikvm(866): Wrote stack traces to '/data/anr/traces.txt'
         07-15 23:50:45.416: I/dalvikvm(866): threadid=3: reacting to signal 3
         07-15 23:50:45.426: I/dalvikvm(866): Wrote stack traces to '/data/anr/traces.txt'

This is the Main Activity

             public class MainActivity extends Activity implements  OnClickListener{
            private static final int MY_BUTTON = 9000,MY_BUTTON2 = 9002;
           static int id=0;
           LinearLayout ll;
           SqliteDatabase db;
          Cursor cursor;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.design);
           db=new SqliteDatabase(getApplicationContext());
          ll=(LinearLayout)findViewById(R.id.linearLayout2);
    Button b = new Button(this);
    b.setText("Add a subject");
    b.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    b.setId(MY_BUTTON);
    ll.addView(b);
    Button b2 = new Button(this);
    b2.setText("Update Attendance");
    b2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    b2.setId(MY_BUTTON2);
         ll.addView(b2);
         b2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i=new Intent(getApplicationContext(),Activity2.class);
            startActivity(i);   
        }
    });
    b.setOnClickListener((OnClickListener) this);

}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    final EditText editText=new EditText(this);
    editText.setHint("Subject Name");
    editText.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    editText.setId(id++);
    Button btn = new Button(this);
    btn.setText("Add to DB");
    btn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    btn.setId(id++);
    ll.addView(btn);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            db.addData(id,editText.getText().toString(),0,0);

        }
    });
    ll.addView(editText);

}

}

Aucun commentaire:

Enregistrer un commentaire