私は何か変わったことに気づいたときに私のアプリケーションに作成、削除、更新を実装していました。ここに私の状況は次のとおりです。App - RecyclerView/SQLiteが奇妙に動く
別紙A:
私は、「ノート」を作成したユニークな(アラーム&通知)として、そのIDを使用して、それを通知してアラームを設定した場合、その後にも(それを削除しようとしましたキャンセルとして)、何も起こりません。通知はまだそこにあり、ですが、私のログは、キャンセルメソッドが呼ばれたことを示しています。
別紙B:
I アプリを再起動した場合(出口は、その後の復帰)ノートはまだそこにあります。を削除した場合、、通知が消えます。それを完全に削除して再起動してください。
DeleteItem方法:
public void deleteItem(final int position, final RecyclerView rv) {
Log.d("RecyclerView", "deleteItem method called at: " + position + " on " + data.get(position).getTitle() + " of ID " + data.get(position).getID());
// BUG position is the same - identical titles called - funky titles appearing from other positions
// BUG Other snackbar showing causes dismissal of original Snackbar and deletes note
final Info currentNote = data.get(position);
final int originalPosition = position;
data.remove(position);
// Removes Info object at specified position
// notifyDataSetChanged();
notifyItemRemoved(position);
// Notifies the RV that item has been removed
/* HOW DOES ALL THIS WORK??
As an ArrayList that contains all Info objects has been created in RecyclerAdapter,
calling the delete method and passing data.get(position) returns the Info object at that position
as every Info object is set in order to the RV item, which makes deleteNote in DB work
*/
Snackbar snackbar = Snackbar.make(rv, "Note Forgotten!", Snackbar.LENGTH_LONG)
// .make(View where Snackbar is shown, Message on Snackbar, LENGTH_INDEFINITE means Snackbar is shown until dismissed manually)
// NOTE If not wrapped in COORDINATORLAYOUT, SWIPE TO DISMISS DOES NOT WORK
.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("RV Adapter", "Note replaced on: " + currentNote.getTitle());
Snackbar.make(rv, "Note replaced!", Snackbar.LENGTH_LONG).show();
data.add(originalPosition, currentNote);
notifyItemInserted(originalPosition);
}
});
// Customizing Snackbar
// Changing message text color
snackbar.setActionTextColor(Color.RED);
// Changing action button text color
View sbView = snackbar.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.YELLOW);
snackbar.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
switch (event) {
case DISMISS_EVENT_ACTION:
// Snackbar was dismissed via click on action button
break;
case DISMISS_EVENT_SWIPE:
// Snackbar was dismissed via manual swipe
break;
case DISMISS_EVENT_MANUAL:
// Snackbar was dismissed via dismiss() method called
break;
case DISMISS_EVENT_CONSECUTIVE:
// Snackbar was dismissed via another Snackbar being shown
break;
case DISMISS_EVENT_TIMEOUT:
Log.d("RV Adapter", "Note deleted on: " + currentNote.getTitle());
// Snackbar was dismissed via timeout
DBInfo dbInfo = new DBInfo(context);
dbInfo.deleteNote(currentNote);
// Deletes RV item/position's Info object
boolean alarmSet = (PendingIntent.getBroadcast(context, currentNote.getID(),
new Intent(context, AlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT) != null);
Log.d("RecyclerAdapter", "Item: " + currentNote.getTitle() + " of ID: " + currentNote.getID() + " has Alarm Set value of " + alarmSet);
// if statement to determine if there is an alarm set
if (alarmSet) {
// Cancel Alarm
// Get intent originally used to invoke AlarmReceiver.class
Intent cancelIntent = new Intent(context, AlarmReceiver.class);
cancelIntent.putExtra("Purpose", "Cancel Alarm");
Log.d("RecyclerAdapter", "PendingIntent cancelled of ID: " + currentNote.getID());
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, currentNote.getID(), cancelIntent, PendingIntent.FLAG_UPDATE_CURRENT);
// Grab same PendingIntent that was used to set Alarm
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
Log.d("RecyclerAdapter", "Alarm Cancelled on: " + currentNote.getTitle());
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(currentNote.getID());
Log.d("RecyclerAdapter", "Notification Cancelled on: " + currentNote.getTitle());
}
}
}
});
snackbar.show();
}
私のログ...
別紙A用:別紙Bのための
03-20 19:05:26.912 32245-32245/owensetiawan.friendlymatch.todolist D/insertNewNote method: Position at: 4
03-20 19:05:26.912 32245-32245/owensetiawan.friendlymatch.todolist D/DBInfo Owen: Insert method called.
03-20 19:05:26.942 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null
03-20 19:05:26.972 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called!
03-20 19:05:26.972 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Deep
03-20 19:05:27.062 32245-32245/owensetiawan.friendlymatch.todolist D/AbsListView: Get MotionRecognitionManager
03-20 19:05:27.062 32245-32245/owensetiawan.friendlymatch.todolist E/MotionRecognitionManager: mSContextService = [email protected]
03-20 19:05:27.062 32245-32245/owensetiawan.friendlymatch.todolist E/MotionRecognitionManager: motionService = [email protected]3ffac67
03-20 19:05:27.062 32245-32245/owensetiawan.friendlymatch.todolist E/MotionRecognitionManager: motionService = [email protected]3ffac67
03-20 19:05:27.102 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{e75147b V.E...... R.....I. 0,0-0,0}
03-20 19:05:27.122 32245-32245/owensetiawan.friendlymatch.todolist E/ViewRootImpl: sendUserActionEvent() mView == null
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list:
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list:
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list:
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list:
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395
03-20 19:05:27.182 32245-32259/owensetiawan.friendlymatch.todolist D/mali_winsys: new_window_surface returns 0x3000, [1592x2395]-format:1
03-20 19:05:27.232 32245-32245/owensetiawan.friendlymatch.todolist W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
03-20 19:05:27.292 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
03-20 19:05:27.292 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: MSG_RESIZED: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list:
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list:
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list:
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395
03-20 19:05:27.312 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list:
03-20 19:05:27.312 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393
03-20 19:05:27.312 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394
03-20 19:05:27.312 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395
03-20 19:05:28.042 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 0
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 1
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/We have liftoff!: DPD Listener called!
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/onDateSet method: Date set for: 20/2/2016
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/Alarm: Set Alarm method called on: !20/2/2016
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/DBInfo: Note retrieved ID of: 5
03-20 19:05:28.242 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null
03-20 19:05:28.262 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #1 mView = android.widget.LinearLayout{d7b9729 V.E...... ......I. 0,0-0,0}
03-20 19:05:28.272 32245-32245/owensetiawan.friendlymatch.todolist E/ViewRootImpl: sendUserActionEvent() mView == null
03-20 19:05:28.312 32245-32259/owensetiawan.friendlymatch.todolist D/mali_winsys: new_window_surface returns 0x3000, [928x176]-format:1
03-20 19:05:28.322 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
03-20 19:05:28.342 32245-32245/owensetiawan.friendlymatch.todolist W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
03-20 19:05:29.172 32245-32245/owensetiawan.friendlymatch.todolist D/AlarmReceiver: Deep called on: 20/3/2016 with ID of: 5
03-20 19:05:29.172 32245-32245/owensetiawan.friendlymatch.todolist D/AlarmReceiver: Receiver called!
03-20 19:05:30.312 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null
03-20 19:05:31.902 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 0
03-20 19:05:32.312 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 1
03-20 19:05:32.442 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerView: deleteItem method called at: 3 on Deep of ID 0
03-20 19:05:35.772 32245-32245/owensetiawan.friendlymatch.todolist D/RV Adapter: Note deleted on: Deep
03-20 19:05:35.792 32245-32245/owensetiawan.friendlymatch.todolist D/DBInfo: deleteNote method called on: Deep
03-20 19:05:35.792 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Item: Deep of ID: 0 has Alarm Set value of true
03-20 19:05:35.792 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: PendingIntent cancelled of ID: 0
03-20 19:05:35.792 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Alarm Cancelled on: Deep
03-20 19:05:35.802 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Notification Cancelled on: Deep
03-20 19:05:39.852 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processKey 0
03-20 19:05:39.952 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processKey 1
03-20 19:05:40.662 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null
:ディープアップ方法を示し
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/DBInfo: Columns created: [_id, note_title, note_content]
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/DBHelper Owen: Loading entries: 4 Date: Sun Mar 20 21:30:56 GMT+08:00 2016
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/ItemTouchHelper: Callback called!
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/Activity: performCreate Call Injection manager
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist I/InjectionManager: dispatchOnViewCreated > Target : owensetiawan.friendlymatch.todolist.MainActivity isFragment :false
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/SecWifiDisplayUtil: Metadata value : SecSettings2
03-20 21:30:56.392 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{1489836 I.E...... R.....ID 0,0-0,0}
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called!
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Factory reset phone
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called!
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Supermarket
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called!
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Keepa
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called!
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Deep
03-20 21:30:56.432 31168-31183/owensetiawan.friendlymatch.todolist D/mali_winsys: new_window_surface returns 0x3000, [1440x2560]-format:1
03-20 21:30:56.442 31168-31168/owensetiawan.friendlymatch.todolist I/InjectionManager: dispatchCreateOptionsMenu :owensetiawan.friendlymatch.todolist.MainActivity
03-20 21:30:56.442 31168-31168/owensetiawan.friendlymatch.todolist I/InjectionManager: dispatchPrepareOptionsMenu :owensetiawan.friendlymatch.todolist.MainActivity
03-20 21:30:56.442 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1
03-20 21:30:56.462 31168-31168/owensetiawan.friendlymatch.todolist W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
03-20 21:30:56.502 31168-31168/owensetiawan.friendlymatch.todolist I/Timeline: Timeline: Activity_idle id: [email protected] time:60508201
03-20 21:30:56.742 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null
03-20 21:30:57.292 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 0
03-20 21:30:57.462 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 1
03-20 21:30:57.602 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: deleteItem method called at: 3 on Deep of ID 6
03-20 21:31:00.942 31168-31168/owensetiawan.friendlymatch.todolist D/RV Adapter: Note deleted on: Deep
03-20 21:31:00.952 31168-31168/owensetiawan.friendlymatch.todolist D/DBInfo: deleteNote method called on: Deep
03-20 21:31:00.962 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Item: Deep of ID: 6 has Alarm Set value of true
03-20 21:31:00.962 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: PendingIntent cancelled of ID: 6
03-20 21:31:00.962 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Alarm Cancelled on: Deep
03-20 21:31:00.962 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Notification Cancelled on: Deep
注意すなわち、を削除しないでください。また、2つのIDがの場合、アラームセットの場合はとなります。
私は迷っていますか?コンピュータを再起動する必要がありますか? Androidのバグ? ???????????????????????????????????????????????????????? ??????????? 何か答えが私の永遠の感謝を受けるでしょう。
すべてのソリューションを呼ぶだろうか? – sasha
まだ残念ながら、何もありません。 –