teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

エラー追記

2020/03/12 11:41

投稿

kbayashi
kbayashi

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,19 @@
1
1
  今現在todoアプリを作っています
2
2
  タスクの完了・未完了を切り替えるためにswitchビューを使って処理しているのですが、同じセルのswitchビューを2回切り替えると、アプリが強制終了してしまいます。Adapter内のrealm.executeTransaction内で二回目に、flgを更新する時にアプリが強制終了していますが、解決方法がわかりません。どなたか助言を頂けないでしょうか。
3
- E/.example.mytas: Unknown bits set in runtime_flags: 0x8000とエラーが有りました。
3
+ ##発生してエラーメッセージ
4
+ 2020-03-12 20:27:59.431 8936-8936/? E/.example.mytas: Unknown bits set in runtime_flags: 0x8000
5
+ 2020-03-12 20:28:08.039 8936-8936/com.example.mytask A/.example.mytas: java_vm_ext.cc:570] JNI DETECTED ERROR IN APPLICATION: JNI NewLocalRef called with pending exception java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling androidx.recyclerview.widget.RecyclerView{ea9d690 VFED..... ......ID 0,909-1080,1584 #7f080108 app:id/task_list}, adapter:com.example.mytask.TaskAdapter@1106b89, layout:androidx.recyclerview.widget.LinearLayoutManager@9b7b78e, context:com.example.mytask.MainActivity@3b61e53
6
+ 2020-03-12 20:28:08.039 8936-8936/com.example.mytask A/.example.mytas: java_vm_ext.cc:570] at void androidx.recyclerview.widget.RecyclerView.assertNotInLayoutOrScroll(java.lang.String) (RecyclerView.java:3051)
7
+ 2020-03-12 20:28:08.039 8936-8936/com.example.mytask A/.example.mytas: java_vm_ext.cc:570] at void androidx.recyclerview.widget.RecyclerView$RecyclerViewDataObserver.onItemRangeChanged(int, int, java.lang.Object) (RecyclerView.java:5547)
8
+ 2020-03-12 20:28:08.039 8936-8936/com.example.mytask A/.example.mytas: java_vm_ext.cc:570] at void androidx.recyclerview.widget.RecyclerView$AdapterDataObservable.notifyItemRangeChanged(int, int, java.lang.Object) (RecyclerView.java:12268)
4
9
 
5
10
 
6
11
 
7
12
  下が現在作成しているアプリの画面です
8
13
  ![イメージ説明](0614ce9301f52cecc6356381d72fc057.jpeg)
9
14
 
15
+ ##ソースコード
16
+
10
17
  ```adapter
11
18
  class TaskAdapter(data: OrderedRealmCollection<Task>, val realm: Realm):
12
19
  RealmRecyclerViewAdapter<Task, TaskAdapter.ViewHolder>(data, true){

5

追加

2020/03/12 11:41

投稿

kbayashi
kbayashi

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  今現在todoアプリを作っています
2
- タスクの完了・未完了を切り替えるためにswitchビューを使って処理しているのですが、同じセルのswitchビューを2回切り替えると、アプリが強制終了してしまいます。Adapter内のrealm.executeTransactionが強制終了の原因だと思っていますが、解決方法がわかりません。どなたか助言を頂けないでしょうか。
2
+ タスクの完了・未完了を切り替えるためにswitchビューを使って処理しているのですが、同じセルのswitchビューを2回切り替えると、アプリが強制終了してしまいます。Adapter内のrealm.executeTransaction内で二回目に、flgを更新する時にアプリが強制終了ていますが、解決方法がわかりません。どなたか助言を頂けないでしょうか。
3
3
  E/.example.mytas: Unknown bits set in runtime_flags: 0x8000というエラーが有りました。
4
4
 
5
5
 

4

realm.getdefoult() realm.closeを削除

2020/03/12 09:15

投稿

kbayashi
kbayashi

スコア18

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
  ![イメージ説明](0614ce9301f52cecc6356381d72fc057.jpeg)
9
9
 
10
10
  ```adapter
11
- class TaskAdapter(data: OrderedRealmCollection<Task>, val realm: Realm):
11
+ class TaskAdapter(data: OrderedRealmCollection<Task>, val realm: Realm):
12
12
  RealmRecyclerViewAdapter<Task, TaskAdapter.ViewHolder>(data, true){
13
13
 
14
14
  init {
@@ -36,7 +36,6 @@
36
36
  //指定された位置にデータを表示する必要がある時、呼び出される
37
37
  override fun onBindViewHolder(holder: TaskAdapter.ViewHolder, position: Int) {
38
38
 
39
- var realm: Realm = Realm.getDefaultInstance()
40
39
  //データを取得
41
40
  val task: Task? = getItem(position)
42
41
  //Viewに値をセット
@@ -50,7 +49,7 @@
50
49
  val prevTask: Task? = if (position > 0) getItem(position - 1) else null
51
50
  val df = SimpleDateFormat("yyyy/MM/dd")
52
51
  if(prevTask != null){
53
- //日付が一致するならセル合体
52
+ //日付が一致するなら日付消してくっつける
54
53
  if(df.format(prevTask?.date) == df.format(task?.date)){
55
54
  holder.date.setVisibility(View.GONE);
56
55
  }
@@ -71,23 +70,19 @@
71
70
  // アンチエイリアスをオンにする
72
71
  paint.isAntiAlias = true
73
72
 
74
- //タスクを完了済みにする
73
+
75
- realm.executeTransaction {db: Realm->
76
- val get_task = db.where<Task>().equalTo("id", task?.id).findFirst()
77
- get_task?.flg = true
78
- }
79
74
  }else if(isChecked == false){
80
75
  //取り消し線を消す
81
76
  holder.title.text = task?.title
82
77
  paint.flags = holder.title.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
83
- //タスクを完了前にする
84
- realm.executeTransaction {db: Realm->
85
- val get_task = db.where<Task>().equalTo("id", task?.id).findFirst()
86
- get_task?.flg = false
87
- }
78
+ }
88
79
 
80
+ realm.executeTransaction {db: Realm->
81
+ var get_task : Task?
82
+ get_task = db.where<Task>().equalTo("id", task?.id).findFirst()
83
+ get_task?.flg = holder.switch.isChecked
89
84
  }
90
- realm.close()
85
+
91
86
  }
92
87
  }
93
88
 

3

修正

2020/03/12 08:58

投稿

kbayashi
kbayashi

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,6 @@
1
1
  今現在todoアプリを作っています
2
- タスクの完了・未完了を切り替えるためにswitchビューを使って処理しているのですが、同じセルのswitchビューを2回切り替えると、アプリが強制終了してしまいます。E/.example.mytas: Unknown bits set in runtime_flags: 0x8000というエラーが有りした。調べてみました検討つきません。どなたか助言を頂けないでしょうか。
2
+ タスクの完了・未完了を切り替えるためにswitchビューを使って処理しているのですが、同じセルのswitchビューを2回切り替えると、アプリが強制終了してしまいます。Adapter内のrealm.executeTransactionが強制終了の原因だ思っていま、解決方法わかりません。どなたか助言を頂けないでしょうか。
3
+ E/.example.mytas: Unknown bits set in runtime_flags: 0x8000というエラーが有りました。
3
4
 
4
5
 
5
6
 

2

エラーの追加

2020/03/12 08:44

投稿

kbayashi
kbayashi

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,13 @@
1
1
  今現在todoアプリを作っています
2
- タスクの完了・未完了を切り替えるためにswitchビューを使って処理しているのですが、同じセルのswitchビューを2回切り替えると、アプリが強制終了してしまいます。調べてみましたが検討がつきません。どなたか助言を頂けないでしょうか。
2
+ タスクの完了・未完了を切り替えるためにswitchビューを使って処理しているのですが、同じセルのswitchビューを2回切り替えると、アプリが強制終了してしまいます。E/.example.mytas: Unknown bits set in runtime_flags: 0x8000というエラーが有りました。調べてみましたが検討がつきません。どなたか助言を頂けないでしょうか。
3
3
 
4
+
5
+
4
6
  下が現在作成しているアプリの画面です
5
7
  ![イメージ説明](0614ce9301f52cecc6356381d72fc057.jpeg)
6
8
 
7
9
  ```adapter
8
- class TaskAdapter(data: OrderedRealmCollection<Task>):
10
+ class TaskAdapter(data: OrderedRealmCollection<Task>, val realm: Realm):
9
11
  RealmRecyclerViewAdapter<Task, TaskAdapter.ViewHolder>(data, true){
10
12
 
11
13
  init {
@@ -108,7 +110,7 @@
108
110
  task_list.layoutManager = LinearLayoutManager(this)
109
111
  var task = realm.where<Task>().findAll()
110
112
  task = task.sort("date")
111
- val adapter = TaskAdapter(task)
113
+ val adapter = TaskAdapter(task,realm)
112
114
  task_list.adapter = adapter
113
115
 
114
116
  //タスク 追加ボタンタップ

1

初心者マーク

2020/03/12 08:38

投稿

kbayashi
kbayashi

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 今現在todoアプリを作っています
1
+ 今現在todoアプリを作っています
2
2
  タスクの完了・未完了を切り替えるためにswitchビューを使って処理しているのですが、同じセルのswitchビューを2回切り替えると、アプリが強制終了してしまいます。調べてみましたが検討がつきません。どなたか助言を頂けないでしょうか。
3
3
 
4
4
  下が現在作成しているアプリの画面です