Please Help ...I m new to android and I am doing my 1st project in Eclipse Juno. I have a Reminder module with Alarm service.Reminder Time and date are stored in Sqlite database with table name reminder_tb. Saving of these values are done in ReminderActivity.java and AlarmService is done creating a new java page TimeService.java and this page is called(intent) from my main page ie LoginActivity.java
At first run my app worked without any errors.Next day when I run again its show:UNFORTUNATELY STOPPED
Here is my ReminderActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reminder);
//open sqlite and fetch id from xpence and pass to php page
SQLiteDatabase db = openOrCreateDatabase("xpence", MODE_PRIVATE, null);
final Cursor cur=db.rawQuery("select * from login",null);
//save details on click
Save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AmountString=Amount.getText().toString().trim();
DateString=Date.getText().toString().trim();
TimeString=Time.getText().toString().trim();
DescString=Desc.getText().toString().trim();
if (cur.moveToFirst())
{
id = cur.getString(0).toString();
doSaveRem(AmountString,DateString,TimeString,DescString,id);
}
}
});
}
public void doSaveRem(final String AmountString,final String DateString,final String TimeString,final String DescString,final String id)
{
//Toast.makeText(getApplicationContext(), "Loaded"+AmountString+DateString+TimeString+DescString+id,Toast.LENGTH_SHORT).show();
db=openOrCreateDatabase("xpence", MODE_PRIVATE, null);
//TABLE FOR SMS AND NOTIFY
//Insert to SMSNOTIFY
db.execSQL("create table if not exists reminder_tb(amount varchar,date varchar,time varchar,desc varchar,id,active_flag INTEGER DEFAULT 0)");
db.execSQL("insert into reminder_tb(amount,date,time,desc,id) values('"+AmountString+"','"+DateString+"','"+TimeString+"','"+ DescString+"','"+id+"')");
Cursor c = db.rawQuery("SELECT * FROM reminder_tb", null);
c.moveToFirst();
if(c.getCount()>0)
{
Toast.makeText(getApplicationContext(),"Saved!",Toast.LENGTH_LONG).show();
Amount.setText("");
Date.setText("");
Time.setText("");
Desc.setText("");
}
db.close();
finish();
}
//// - Here is TimeService.java
public class TimerService extends Service
{
String dateString;
String timeString;
private int year;
private int month;
private int day;
private int hour;
private int minute;
private String date;
// private Cursor c;
private SQLiteDatabase db;
// constant
public long NOTIFY_INTERVAL = 1000;
// run on another Thread to avoid crash
private Handler mHandler = new Handler();
// timer handling
private Timer mTimer = null;
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public void onCreate()
{
// cancel if already existed
if (mTimer != null)
{
mTimer.cancel();
}
else
{
// recreate new
mTimer = new Timer();
}
// schedule task
mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
}
class TimeDisplayTimerTask extends TimerTask
{
@Override
public void run()
{
// run on another thread
mHandler.post(new Runnable()
{
@Override
public void run()
{
AlarmService();
}
});
}
}
private void AlarmService()
{
//for date
final Calendar ca = Calendar.getInstance();
year = ca.get(Calendar.YEAR);
month = ca.get(Calendar.MONTH)+1;
day = ca.get(Calendar.DAY_OF_MONTH);
date =year+"-"+month+"-"+day;
final Calendar c1 = Calendar.getInstance();
hour = c1.get(Calendar.HOUR_OF_DAY);
minute = c1.get(Calendar.MINUTE);
String timeSet = "";
if (hour > 12)
{
hour -= 12;
timeSet = "PM";
} else if (hour == 0)
{
hour += 12;
timeSet = "AM";
}
else if (hour == 12)
timeSet = "PM";
else
timeSet = "AM";
String minutes = "";
if (minute < 10)
minutes = "0" + minute;
else
minutes = String.valueOf(minute);
String TimeString = new StringBuilder().append(hour).append(':').append(minutes).append(" ").append(timeSet).toString();
db = openOrCreateDatabase("xpence", Context.MODE_PRIVATE, null);
String tableName="reminder_tb";
Cursor cursor = db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
Cursor c = db.rawQuery("SELECT * FROM reminder_tb",null);
c.moveToFirst();
if( cursor!=null)
{
if(cursor.getCount()>0)
{
cursor.close();
c = db.rawQuery("SELECT * FROM reminder_tb where date='"+date+"' and time='"+TimeString+"' and active_flag=0" , null);
c.moveToFirst();
if(c.getCount()>0)
{
Toast.makeText(getApplicationContext(), "REMINDER: " + c.getString(3) + "Amount:"+c.getString(0)+" On "+date+","+TimeString, Toast.LENGTH_LONG).show();
db.execSQL("update reminder_tb SET active_flag=1 WHERE date='"+date+"' and time='"+TimeString+"'");
}
c.close();
}
cursor.close();
}
db.close();
}
}
///- LoginActivity.java
Intent serviceIntent = new Intent(LoginActivity.this, TimerService.class); LoginActivity.this.startService(serviceIntent);
-
Here is the LogCat
03-08 15:50:20.481: E/Trace(1799): error opening trace file: No such file or directory (2) 03-08 15:50:21.121: D/dalvikvm(1799): GC_CONCURRENT freed 44K, 4% free 2768K/2876K, paused 7ms+2ms, total 52ms 03-08 15:50:21.461: D/dalvikvm(1799): GC_FOR_ALLOC freed 8K, 3% free 2829K/2912K, paused 36ms, total 48ms 03-08 15:50:21.561: I/dalvikvm-heap(1799): Grow heap (frag case) to 7.820MB for 5242892-byte allocation 03-08 15:50:21.581: D/dalvikvm(1799): GC_FOR_ALLOC freed <1K, 2% free 7949K/8036K, paused 25ms, total 25ms 03-08 15:50:21.641: D/dalvikvm(1799): GC_CONCURRENT freed <1K, 2% free 7948K/8036K, paused 13ms+2ms, total 58ms 03-08 15:50:22.912: E/SQLiteLog(1799): (1) no such table: reminder_tb 03-08 15:50:22.931: D/AndroidRuntime(1799): Shutting down VM 03-08 15:50:22.931: W/dalvikvm(1799): threadid=1: thread exiting with uncaught exception (group=0xb2d0a908) 03-08 15:50:22.912: E/SQLiteLog(1799): (1) no such table: reminder_tb 03-08 15:50:22.931: D/AndroidRuntime(1799): Shutting down VM 03-08 15:50:22.931: W/dalvikvm(1799): threadid=1: thread exiting with uncaught exception (group=0xb2d0a908) 03-08 15:50:22.951: E/AndroidRuntime(1799): FATAL EXCEPTION: main 03-08 15:50:22.951: E/AndroidRuntime(1799): android.database.sqlite.SQLiteException: no such table: reminder_tb (code 1): , while compiling: SELECT * FROM reminder_tb 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:37) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.ANSAR.xpence.TimerService.AlarmService(TimerService.java:149) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.ANSAR.xpence.TimerService.access$1(TimerService.java:91) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.ANSAR.xpence.TimerService$TimeDisplayTimerTask$1.run(TimerService.java:81) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.os.Handler.handleCallback(Handler.java:725) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.os.Handler.dispatchMessage(Handler.java:92) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.os.Looper.loop(Looper.java:137) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.app.ActivityThread.main(ActivityThread.java:5041) 03-08 15:50:22.951: E/AndroidRuntime(1799): at java.lang.reflect.Method.invokeNative(Native Method) 03-08 15:50:22.951: E/AndroidRuntime(1799): at java.lang.reflect.Method.invoke(Method.java:511) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 03-08 15:50:22.951: E/AndroidRuntime(1799): at dalvik.system.NativeStart.main(Native Method)*
Aucun commentaire:
Enregistrer un commentaire