· 8 years ago · Jul 28, 2018, 10:02 PM
1public class DatabaseHelper extends SQLiteOpenHelper {
2
3 private static final int DATABASE_VERSION = 1;
4 private static final String DATABASE_NAME = "todo.db";
5 private static final String TABLE_NAME = "task";
6 private static final String COLUMN_ID = "id";
7 private static final String COLUMN_DESCRIPTION = "description";
8 private static final String COLUMN_DATE ="date";
9 private static final String COLUMN_DONE = "done";
10 private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+" ("+COLUMN_ID+" INTEGER PRIMARY KEY AUTOINCREMENT,"+COLUMN_DESCRIPTION+" TEXT,"+
11 COLUMN_DATE+" DATE,"+COLUMN_DONE+" BOOLEAN)";
12 SQLiteDatabase db;
13
14 public DatabaseHelper(Context context)
15 {
16 super(context,DATABASE_NAME,null,DATABASE_VERSION);
17 }
18
19
20 @Override
21 public void onCreate(SQLiteDatabase db)
22 {
23 this.db = db;
24 db.execSQL(CREATE_TABLE);
25 }
26
27 @Override
28 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
29 String query = "DROP TABLE IF EXISTS "+TABLE_NAME;
30 db.execSQL(query);
31 this.onCreate(db);
32 }
33
34 public void insertTask(Task task)
35 {
36 db = getWritableDatabase();
37 ContentValues values = new ContentValues();
38 values.put(COLUMN_DESCRIPTION,task.getDescription());
39 values.put(COLUMN_DATE,task.getDate().toString());
40 values.put(COLUMN_DONE,Boolean.FALSE.toString());
41 db.insert(TABLE_NAME, null, values);
42 db.close();
43 }
44}
45
46public class CreateTaskFragment extends Fragment{
47 private DatabaseHelper dbHelper = new DatabaseHelper(getActivity());
48 private Button saveBtn;
49 private EditText tfDescription,tfDate;
50 private int yy,mm,dd;
51 @Nullable
52 @Override
53 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
54
55
56 View view = inflater.inflate(R.layout.create_task,container,false);
57
58 tfDescription = (EditText)view.findViewById(R.id.tf_task_description);
59 tfDate = (EditText)view.findViewById(R.id.tf_task_date);
60 tfDate.setOnClickListener(new View.OnClickListener() {
61 @Override
62 public void onClick(View v) {
63 setPickerDate(v);
64 }
65 });
66
67 saveBtn = (Button)view.findViewById(R.id.btn_save_task);
68 saveBtn.setOnClickListener(new View.OnClickListener() {
69 @Override
70 public void onClick(View v) {
71 saveTask();
72 }
73 });
74
75 return view;
76 }
77
78 public void setPickerDate(View v)
79 {
80 final Calendar calendar = Calendar.getInstance();
81 int yy = calendar.get(Calendar.YEAR);
82 int mm = calendar.get(Calendar.MONTH);
83 int dd = calendar.get(Calendar.DAY_OF_MONTH);
84 DatePickerDialog datePicker = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
85 @Override
86 public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
87 String date = String.valueOf(monthOfYear+1)+"/"+String.valueOf(dayOfMonth)+"/"+String.valueOf(year);
88 tfDate.setText(date);
89 }
90 }, yy, mm, dd);
91 datePicker.show();
92 }
93
94 public void saveTask()
95 {
96 String description = tfDescription.getText().toString();
97 String date = tfDate.getText().toString();
98
99 if(description.isEmpty())
100 {
101 Toast.makeText(getActivity().getBaseContext(),"Description is required",Toast.LENGTH_SHORT).show();
102 }
103 else if(date.isEmpty())
104 {
105 Toast.makeText(getActivity().getBaseContext(),"Date is required",Toast.LENGTH_SHORT).show();
106 }
107 else if(description.length()<getResources().getInteger(R.integer.min_description_length))
108 {
109 String minChar = String.valueOf(getResources().getInteger(R.integer.min_description_length));
110 Toast.makeText(getActivity().getBaseContext(),"Description should be minium "+minChar+" characters",Toast.LENGTH_SHORT).show();
111 }
112 else{
113 //check date
114 SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
115 boolean parseOk = false;
116 Date taskDate = new Date();
117 try{
118 taskDate = format.parse(date);
119 Task task = new Task();
120 task.setDescription(description);
121 task.setDate(taskDate);
122 dbHelper.insertTask(task);
123 parseOk = true;
124 }
125 catch(ParseException e)
126 {
127 parseOk = false;
128 }
129
130 if(parseOk)
131 {
132 //insert task to database
133 Toast.makeText(getActivity().getBaseContext(),"Task saved",Toast.LENGTH_SHORT).show();
134 }
135 else{
136 Toast.makeText(getActivity().getBaseContext(),"Invalid date format",Toast.LENGTH_SHORT).show();
137 }
138 }
139 }
140}
141
14201-24 15:49:30.007 575-575/? V/InputMethodService: onEvaluateInputViewShown: config.hardKeyboardHidden = 1
14301-24 15:49:30.011 575-597/? E/BinaryDictionaryGetter: Could not find a dictionary pack
14401-24 15:49:30.011 575-597/? E/ActivityThread: Failed to find provider info for com.android.inputmethod.latin.dictionarypack
14501-24 15:49:31.167 1765-1765/? D/AndroidRuntime: Shutting down VM
14601-24 15:49:31.167 1765-1765/? W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa6206908)
14701-24 15:49:31.167 1765-1765/? E/AndroidRuntime: FATAL EXCEPTION: main
14801-24 15:49:31.167 1765-1765/? E/AndroidRuntime: java.lang.NullPointerException
14901-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
15001-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
15101-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at com.waiyanhein.todo.todo.DatabaseHelper.insertTask(DatabaseHelper.java:46)
15201-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at com.waiyanhein.todo.todo.CreateTaskFragment.saveTask(CreateTaskFragment.java:100)
15301-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at com.waiyanhein.todo.todo.CreateTaskFragment$2.onClick(CreateTaskFragment.java:49)
15401-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at android.view.View.performClick(View.java:4204)
15501-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:17355)
15601-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:725)
15701-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:92)
15801-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)
15901-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5041)
16001-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
16101-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
16201-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
16301-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
16401-24 15:49:31.167 1765-1765/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
16501-24 15:49:31.167 415-426/? W/ActivityManager: Force finishing activity com.waiyanhein.todo.todo/.MainActivity
16601-24 15:49:31.231 415-426/? D/dalvikvm: GC_FOR_ALLOC freed 1480K, 53% free 6135K/12844K, paused 5ms, total 6ms
16701-24 15:49:31.239 415-418/? D/dalvikvm: GC_CONCURRENT freed 46K, 47% free 6925K/12844K, paused 2ms+1ms, total 10ms
16801-24 15:49:31.251 415-431/? D/dalvikvm: GC_FOR_ALLOC freed 107K, 45% free 7160K/12844K, paused 7ms, total 7ms
16901-24 15:49:31.263 415-418/? D/dalvikvm: GC_CONCURRENT freed 1K, 36% free 8260K/12844K, paused 1ms+0ms, total 10ms
17001-24 15:49:31.263 415-431/? D/dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 3ms
17101-24 15:49:31.267 415-431/? I/dalvikvm-heap: Grow heap (frag case) to 10.614MB for 2536932-byte allocation
17201-24 15:49:31.279 415-423/? D/dalvikvm: GC_FOR_ALLOC freed <1K, 30% free 10737K/15324K, paused 13ms, total 13ms
17301-24 15:49:31.743 415-428/? W/ActivityManager: Activity pause timeout for ActivityRecord{5325c494 u0 com.waiyanhein.todo.todo/.MainActivity}
17401-24 15:49:31.747 415-470/? I/qtaguid: Failed write_ctrl(s 1 10023) res=-1 errno=1
17501-24 15:49:31.747 415-470/? W/NetworkManagementSocketTagger: setKernelCountSet(10023, 1) failed with errno -1
17601-24 15:49:31.791 598-598/? W/EGL_genymotion: eglSurfaceAttrib not implemented
17701-24 15:49:32.359 415-470/? I/qtaguid: Failed write_ctrl(s 0 10062) res=-1 errno=1
17801-24 15:49:32.359 415-470/? W/NetworkManagementSocketTagger: setKernelCountSet(10062, 0) failed with errno -1
17901-24 15:49:42.307 415-428/? W/ActivityManager: Activity destroy timeout for ActivityRecord{5325c494 u0 com.waiyanhein.todo.todo/.MainActivity}
180
181dbHelper.insertTask(task);
182
183new DatabaseHelper(getActivity());
184
185dbHelper = new DatabaseHelper(getActivity());