· 8 years ago · Feb 04, 2018, 07:44 PM
102-04 22:13:03.276 31682-31682/com.example.jeavie.deadlineyesterday E/InputEventReceiver: Exception dispatching input event.
202-04 22:13:03.276 31682-31682/com.example.jeavie.deadlineyesterday E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
302-04 22:13:03.278 31682-31682/com.example.jeavie.deadlineyesterday E/MessageQueue-JNI: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
4 at android.database.AbstractCursor.checkPosition(AbstractCursor.java:468)
5 at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
6 at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
7 at com.example.jeavie.deadlineyesterday.MainActivity$2.onTouch(MainActivity.java:411)
8 at android.view.View.dispatchTouchEvent(View.java:11772)
9 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2962)
10 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2643)
11 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
12 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
13 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
14 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
15 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
16 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
17 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
18 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
19 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
20 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
21 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
22 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
23 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
24 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
25 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968)
26 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
27 at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:448)
28 at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1829)
29 at android.app.Activity.dispatchTouchEvent(Activity.java:3307)
30 at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
31 at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
32 at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410)
33 at android.view.View.dispatchPointerEvent(View.java:12015)
34 at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4795)
35 at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4609)
36 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
37 at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200)
38 at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166)
39 at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4293)
40 at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174)
41 at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4350)
42 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
43 at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200)
44 at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166)
45 at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174)
46 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147)
47 at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6661)
48 at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6635)
49 at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6596)
50 at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6764)
51 at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
52 at android.os.MessageQueue.nativePollOnce(Native Method)
53 at android.os.MessageQueue.next(MessageQueue.java:325)
54 at android.os.Looper.loop(Looper.java:142)
55 at android.app.ActivityThread.main(ActivityThread.java:6494)
56 at java.lang.reflect.Method.invoke(Native Method)
57 at com.
58
59package com.example.jeavie.deadlineyesterday;
60
61import android.content.ContentValues;
62import android.content.Context;
63import android.database.Cursor;
64import android.database.sqlite.SQLiteDatabase;
65import android.database.sqlite.SQLiteOpenHelper;
66
67public class DbActivity extends SQLiteOpenHelper {
68
69
70 private static final String DB_NAME = "DB";
71 public static final String DB_TABLE = "Tasks";
72 private static final int DB_VER = 1;
73
74 public static final String DB_ID = "id";
75 public static final String DB_NUMBER = "number";
76 public static final String DB_SUMMARY = "summary";
77 public static final String DB_DATE = "date";
78 public static final String DB_TIME = "time";
79 public static final String DB_DEADLINE = "deadline";
80 public static final String DB_TAGS = "tags";
81 public static final String DB_LIST = "list";
82
83 private static final String DATABASE_CREATE = "create table " + DB_TABLE + " ( " + DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + DB_NUMBER + " TEXT NOT NULL, " + DB_SUMMARY + " TEXT NOT NULL, " + DB_DATE + " TEXT NOT NULL, " + DB_TIME + " TEXT NOT NULL, " + DB_DEADLINE + " TEXT NOT NULL, " + DB_TAGS + " TEXT NOT NULL, " + DB_LIST + " TEXT NOT NULL" + " )";
84
85 public DbActivity(Context context) {
86 super(context, DB_NAME, null, DB_VER);
87 }
88
89 @Override
90 public void onCreate(SQLiteDatabase db) {
91 db.execSQL(DATABASE_CREATE);
92 }
93
94 @Override
95 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
96 db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
97 onCreate(db);
98 }
99
100 public boolean insertData (String number, String summary, String date,
101 String time, String deadline, String tags, String list) {
102 SQLiteDatabase db = this.getWritableDatabase();
103 ContentValues contentValues = new ContentValues();
104 contentValues.put(DB_NUMBER, number);
105 contentValues.put(DB_SUMMARY, summary);
106 contentValues.put(DB_DATE, date);
107 contentValues.put(DB_TIME, time);
108 contentValues.put(DB_DEADLINE, deadline);
109 contentValues.put(DB_TAGS, tags);
110 contentValues.put(DB_LIST, list);
111 long result = db.insert(DB_TABLE, null, contentValues);
112 return (result != -1);
113 }
114
115 public Cursor getAllData() {
116 SQLiteDatabase db = this.getWritableDatabase();
117 return db.rawQuery("select * from " + DB_TABLE, null);
118 }
119
120 public boolean updateData(String id, String number, String summary, String date,
121 String time, String deadline, String tags, String list) {
122 SQLiteDatabase db = this.getWritableDatabase();
123 ContentValues contentValues = new ContentValues();
124 contentValues.put(DB_NUMBER, number);
125 contentValues.put(DB_SUMMARY, summary);
126 contentValues.put(DB_DATE, date);
127 contentValues.put(DB_TIME, time);
128 contentValues.put(DB_DEADLINE, deadline);
129 contentValues.put(DB_TAGS, tags);
130 contentValues.put(DB_LIST, list);
131 db.update(DB_TABLE, contentValues, DB_ID + " = ?", new String[] { id });
132 return true;
133 }
134
135 public Integer deleteData (String id) {
136 SQLiteDatabase db = this.getWritableDatabase();
137 return db.delete(DB_TABLE, DB_ID + " = ?", new String[]{id});
138 }
139
140 public Cursor getData(String id) {
141 SQLiteDatabase db = this.getReadableDatabase();
142 Cursor data = db.query(true, DB_TABLE,
143 new String[] { DB_NUMBER, DB_SUMMARY,
144 DB_DATE, DB_TIME, DB_DEADLINE, DB_TAGS}, DB_ID + "=" + id, null,
145 null, null, null, null);
146 if (data != null) {
147 data.moveToFirst();
148 }
149 return data;
150 }
151}
152
153package com.example.jeavie.deadlineyesterday;
154
155//imports
156
157public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
158
159 public final static int INTENT_REQUEST_CODE = 1;
160 public final static int INTENT_REQUEST_CODE_TWO = 2;
161 public static int INTENT_RESULT_CODE = 1;
162 public static int INTENT_RESULT_CODE_TWO = 2;
163 public final static int INTENT_EMPTY_CODE = 0;
164 public static Integer listNumber = 0;
165 public static Integer dataNumber = 1;
166 public static Integer editNumber = 1;
167
168 //Swiping
169 private boolean mSwiping = false; // detects if user is swiping on ACTION_UP
170 private boolean mItemPressed = false; // Detects if user is currently holding down a view
171
172 private ListView listView;
173 DeadlineActivityAdapter deadlineActivityAdapter;
174 List<DeadlineActivity> list;
175 String summary, getData, getTime;
176
177 DbActivity db;
178 Cursor fullData;
179 boolean full;
180
181 @Override
182 protected void onCreate(Bundle savedInstanceState) {
183
184 super.onCreate(savedInstanceState);
185 setContentView(R.layout.activity_main_drawer);
186
187 db = new DbActivity(this);
188
189 fullData = db.getAllData();
190 if (fullData.getCount() > 0){
191 if (fullData.moveToFirst()) {
192 list = new ArrayList<>();
193 do {
194 String check = fullData.getString(7);
195 if (check.startsWith("li")){
196 summary=fullData.getString(2);
197 getData=fullData.getString(3);
198 getTime=fullData.getString(4);
199 String deadline=fullData.getString(5);
200 String tags=fullData.getString(6);
201 list.add(new DeadlineActivity(String.valueOf(dataNumber - 1), summary, getData, getTime, deadline,
202 tags));
203 full = true;
204 listNumber++;
205 }
206 } while (fullData.moveToNext());
207 }
208 }
209 if (!full) list = new ArrayList<>();
210
211 Toolbar toolbar = findViewById(R.id.toolbar_main);
212 setSupportActionBar(toolbar);
213
214 FloatingActionButton addTask = findViewById(R.id.addTask);
215 addTask.setOnClickListener(new View.OnClickListener() {
216 @Override
217 public void onClick(View v) {
218 Intent intent = new Intent();
219 intent.setClass(MainActivity.this, AddTaskActivity.class);
220 startActivityForResult(intent, INTENT_REQUEST_CODE);
221 }
222 });
223
224 DrawerLayout drawerLayout = findViewById(R.id.drawer_layout);
225 ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
226 this, drawerLayout, toolbar, R.string.open, R.string.close);
227 drawerLayout.addDrawerListener(toggle);
228 toggle.syncState();
229
230 NavigationView navigationView = findViewById(R.id.navigation);
231 navigationView.setNavigationItemSelectedListener(this);
232
233 listView = findViewById(R.id.listDeadlines);
234
235 TextView emptyText = findViewById(android.R.id.empty);
236 listView.setEmptyView(emptyText);
237
238 deadlineActivityAdapter = new DeadlineActivityAdapter(this, list, mTouchListener);
239 listView.setAdapter(deadlineActivityAdapter);
240
241 }
242
243 @Override
244 protected void onActivityResult (int requestCode, int resultCode, Intent data) {
245 if (requestCode == INTENT_RESULT_CODE){
246 if(resultCode == INTENT_RESULT_CODE) {
247 Cursor newDeadline = db.getAllData();
248 newDeadline.moveToLast();
249 summary=newDeadline.getString(2);
250 getData=newDeadline.getString(3);
251 getTime=newDeadline.getString(4);
252 String deadline=newDeadline.getString(5);
253 String tags=newDeadline.getString(6);
254 list.add(new DeadlineActivity(String.valueOf(dataNumber), summary, getData, getTime, deadline,
255 tags));
256 dataNumber++;
257 deadlineActivityAdapter.notifyDataSetChanged();
258 super.onActivityResult(requestCode, resultCode, data);
259 }
260 }
261 else if (requestCode == INTENT_RESULT_CODE_TWO){
262 if (resultCode == INTENT_RESULT_CODE_TWO) {
263 String a = list.get(editNumber).getId();
264 Cursor newDeadline = db.getData(a);
265 String id = newDeadline.getString(0);
266 summary=newDeadline.getString(1);
267 getData=newDeadline.getString(2);
268 getTime=newDeadline.getString(3);
269 String deadline=newDeadline.getString(4);
270 String tags=newDeadline.getString(5);
271 list.remove(Integer.valueOf(id) - 1);
272 list.add(Integer.valueOf(id) - 1, new DeadlineActivity(id, summary, getData, getTime, deadline, tags));
273
274 deadlineActivityAdapter.notifyDataSetChanged();
275 }
276 }
277 }
278
279 @Override
280 public void onBackPressed() {
281 DrawerLayout drawer = findViewById(R.id.drawer_layout);
282 if (drawer.isDrawerOpen(GravityCompat.START)) {
283 drawer.closeDrawer(GravityCompat.START);
284 } else {
285 super.onBackPressed();
286 }
287 }
288
289 @Override
290 public boolean onCreateOptionsMenu(Menu menu) {
291
292 getMenuInflater().inflate(R.menu.menu_main, menu);
293 return true;
294 }
295
296
297 @Override
298 public boolean onOptionsItemSelected(MenuItem item) {
299
300 switch (item.getItemId()){
301
302 case R.id.toWeek:
303 startActivity(new Intent(this, WeekActivity.class));
304 return true;
305
306 case R.id.history:
307 startActivity(new Intent(this, HistoryActivity.class));
308 return true;
309 }
310 return super.onOptionsItemSelected(item);
311 }
312
313 @SuppressWarnings("StatementWithEmptyBody")
314 @Override
315 public boolean onNavigationItemSelected(MenuItem item) {
316 switch (item.getItemId()) {
317
318 case R.id.tags:
319 startActivity(new Intent(this, TagsActivity.class));
320 return true;
321
322 case R.id.notifications:
323// startActivity(new Intent(this, HistoryActivity.class));
324 return true;
325
326 case R.id.info:
327// startActivity(new Intent(this, HistoryActivity.class));
328 return true;
329 }
330
331 DrawerLayout drawer = findViewById(R.id.drawer_layout);
332 drawer.closeDrawer(GravityCompat.START);
333 return true;
334 }
335
336 private View.OnTouchListener mTouchListener = new View.OnTouchListener()
337 {
338 // The body is limited to 30000 characters, so I cut this listener
339 };
340
341}