**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