質問編集履歴

2

戻るボタンでメイン画面に戻ることには成功していますが、戻ってからtodo.xmlの画面に遷移すると追加したはずのタスクが消えてしまいます。いろいろとコードを入れてみましたが、うまくいきません。。

2023/12/11 17:22

投稿

ottosay
ottosay

スコア4

test CHANGED
File without changes
test CHANGED
@@ -47,6 +47,8 @@
47
47
  import androidx.fragment.app.*;
48
48
  import androidx.recyclerview.widget.*;
49
49
 
50
+
51
+ import android.content.Intent;
50
52
  import android.os.Bundle;
51
53
  import android.util.Log;
52
54
  import android.view.*;
@@ -59,6 +61,7 @@
59
61
 
60
62
  public class TodoFragment extends Fragment {
61
63
  static final String REQUEST_KEY = "TodoFragment";
64
+ private List<Task> taskList = new ArrayList<>();
62
65
 
63
66
  public TodoFragment() {
64
67
  super(R.layout.fragment_todo);
@@ -76,12 +79,24 @@
76
79
  FragmentManager fm = getChildFragmentManager();
77
80
  fm.setFragmentResultListener(AddTaskFragment.REQUEST_KEY, getViewLifecycleOwner(), (rkey, result) -> {
78
81
  taskAdapter.addTask((Task) result.getSerializable(AddTaskFragment.RESULTKEY_TASK));
82
+ });
83
+
84
+ fm.setFragmentResultListener(AddTaskFragment.REQUEST_KEY, getViewLifecycleOwner(), (rkey, result) -> {
85
+ Task addedTask = (Task) result.getSerializable(AddTaskFragment.RESULTKEY_TASK);
86
+ // TaskAdapterに追加
87
+ taskAdapter.addTask(addedTask);
88
+ // TodoFragment内のリストにも追加
89
+ taskList.add(addedTask);
79
90
  });
80
91
 
81
92
  ImageButton btBackTodo = view.findViewById(R.id.btBackTodo);
82
93
  btBackTodo.setOnClickListener(v -> {
83
94
  Toast.makeText(getContext(), "戻るボタンがクリックされました", Toast.LENGTH_SHORT).show();
84
95
  getParentFragmentManager().setFragmentResult(REQUEST_KEY, new Bundle()); //(MainActivity に)通知
96
+
97
+ Intent intent = new Intent(requireContext(), MainActivity.class);
98
+ startActivity(intent);
99
+ requireActivity().finish();
85
100
  });
86
101
 
87
102
  ImageButton addButton = view.findViewById(R.id.btAdd);
@@ -158,9 +173,6 @@
158
173
  return taskName + " at " + getDateTime();
159
174
  }
160
175
  }
161
-
162
-
163
-
164
176
  ```
165
177
  次がAddTaskFragment.javaです
166
178
  ```
@@ -285,3 +297,4 @@
285
297
 
286
298
  前回回答していただいたときにFragmentを利用したら簡単にできるとコード付きで教えてもらったことで、Todoリストにタスクを追加することはできました。
287
299
  今現在はタスクを追加した後に削除マークを付け、押すと追加したタスクを削除して画面から消えるようにしたいと考えています。
300
+ また、戻ってからまたtodo.xmlの画面に遷移すると追加したはずのタスクが消えてしまいます。。。

1

今現在はタスクを追加した後に削除マークを付け、押すと追加したタスクを削除して画面から消えるようにしたいと考えています。

2023/12/11 16:50

投稿

ottosay
ottosay

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,175 +1,122 @@
1
1
  今android studioでTodoリストを作成しています
2
2
 
3
- 項目、日付、時刻の3つを入力する欄を作成するところまでは行けたのですが、追加ボタンを押してもrecyclerViewに追加されません。
4
- 言語はJavaを使用しています。
3
+ 削除ボタンの増設につい、聞きたことがあります。
5
- 5つくらいソースコードを書くので、長くなります。すみません。
6
4
 
7
5
 
8
6
  以下がTodo.javaです。
9
7
 
8
+ ```
10
- package com.example.studytodo;
9
+ package com.example.studytodo;
10
+
11
-
11
+ import androidx.appcompat.app.AppCompatActivity;
12
- import android.content.Intent;
12
+ import androidx.fragment.app.FragmentManager;
13
+
13
14
  import android.os.Bundle;
14
15
  import android.util.Log;
15
- import android.widget.ImageButton;
16
- import android.widget.Toast;
17
- import androidx.activity.result.ActivityResultLauncher;
18
- import androidx.activity.result.contract.ActivityResultContracts;
19
- import androidx.appcompat.app.AppCompatActivity;
20
- import androidx.recyclerview.widget.LinearLayoutManager;
21
- import androidx.recyclerview.widget.RecyclerView;
22
- import org.jetbrains.annotations.Nullable;
23
-
24
- import java.util.ArrayList;
25
- import java.util.List;
26
16
 
27
17
  public class Todo extends AppCompatActivity {
28
-
29
- final List<Task> taskList = new ArrayList<>();
30
- private TaskAdapter taskAdapter;
31
- private static final int ADD_TASK_REQUEST_CODE = 1;
32
-
33
- private ActivityResultLauncher<Intent> addTaskLauncher = registerForActivityResult(
34
- new ActivityResultContracts.StartActivityForResult(),
35
- result -> {
36
- if (result.getResultCode() == RESULT_OK) {
37
- Intent data = result.getData();
38
- if (data != null) {
39
- // 追加されたタスク情報を取得
40
- String taskName = data.getStringExtra("taskName");
41
- String dateTime = data.getStringExtra("dateTime");
42
-
43
- // デバッグのためにログを出力
44
- Log.d("TaskAdded", "Task added: " + taskName + " at " + dateTime);
45
-
46
- // TODO: taskList に追加する処理を実装
47
-
48
- // TODO: RecyclerView を更新する処理を実装
49
- taskAdapter.notifyDataSetChanged();
50
- }
51
- }
52
- }
53
- );
54
-
55
18
  @Override
56
19
  protected void onCreate(Bundle savedInstanceState) {
57
20
  super.onCreate(savedInstanceState);
58
21
  setContentView(R.layout.todo);
59
22
 
23
+ FragmentManager fm = getSupportFragmentManager();
24
+ fm.setFragmentResultListener(TodoFragment.REQUEST_KEY, this, (rkey,result)->{
60
- // RecyclerViewの初期化
25
+ // TodoFragment が back したら何する?
26
+ Log.d("MainActivity", "backed todofragment.");
27
+ });
28
+
29
+ fm.beginTransaction()
30
+ .replace(R.id.fragment_container_view, new TodoFragment())
31
+ .commit();
32
+ }
33
+ }
34
+
35
+ ```
36
+
37
+
38
+
39
+
40
+
41
+ また、次がTodoFragment.javaです
42
+
43
+ ```
44
+ package com.example.studytodo;
45
+
46
+ import androidx.annotation.*;
47
+ import androidx.fragment.app.*;
48
+ import androidx.recyclerview.widget.*;
49
+
50
+ import android.os.Bundle;
51
+ import android.util.Log;
52
+ import android.view.*;
53
+ import android.widget.*;
54
+
55
+ import java.io.Serializable;
56
+ import java.time.LocalDateTime;
57
+ import java.time.format.DateTimeFormatter;
58
+ import java.util.*;
59
+
60
+ public class TodoFragment extends Fragment {
61
+ static final String REQUEST_KEY = "TodoFragment";
62
+
63
+ public TodoFragment() {
64
+ super(R.layout.fragment_todo);
65
+ }
66
+
67
+ @Override
68
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
69
+ super.onViewCreated(view, savedInstanceState);
70
+
71
+ TaskAdapter taskAdapter = new TaskAdapter();
72
+
61
- RecyclerView recyclerView = findViewById(R.id.recyclerViewTasks);
73
+ RecyclerView recyclerView = view.findViewById(R.id.recyclerViewTasks);
62
- taskAdapter = new TaskAdapter(taskList);
63
74
  recyclerView.setAdapter(taskAdapter);
75
+
64
- recyclerView.setLayoutManager(new LinearLayoutManager(this));
76
+ FragmentManager fm = getChildFragmentManager();
65
-
77
+ fm.setFragmentResultListener(AddTaskFragment.REQUEST_KEY, getViewLifecycleOwner(), (rkey, result) -> {
78
+ taskAdapter.addTask((Task) result.getSerializable(AddTaskFragment.RESULTKEY_TASK));
79
+ });
80
+
81
+ ImageButton btBackTodo = view.findViewById(R.id.btBackTodo);
82
+ btBackTodo.setOnClickListener(v -> {
83
+ Toast.makeText(getContext(), "戻るボタンがクリックされました", Toast.LENGTH_SHORT).show();
84
+ getParentFragmentManager().setFragmentResult(REQUEST_KEY, new Bundle()); //(MainActivity に)通知
85
+ });
86
+
87
+ ImageButton addButton = view.findViewById(R.id.btAdd);
66
- setupBackButton();
88
+ addButton.setOnClickListener(v -> {
89
+ Toast.makeText(getContext(), "追加ボタンがクリックされました", Toast.LENGTH_SHORT).show();
67
- setupAddButton();
90
+ new AddTaskFragment().show(fm, null); //ダイアログ表示
68
-
91
+ });
69
- }
92
+ }
70
-
93
+ }
94
+
95
+ class TaskAdapter extends RecyclerView.Adapter<TaskAdapter.ViewHolder> {
96
+ private final List<Task> taskList = new ArrayList<>();
97
+
71
- public void addTask(Task task) {
98
+ void addTask(Task task) {
99
+ Log.d("TaskAdded", "Task added: " + task);
72
100
  taskList.add(task);
73
- Log.d("TaskAdded", "Task added: " + task.getTaskName() + " at " + task.getDateTime());
74
- taskAdapter.notifyDataSetChanged();
101
+ notifyItemInserted(taskList.size()-1);
75
- }
102
+ }
76
-
77
- @Override
103
+
78
- protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
79
- super.onActivityResult(requestCode, resultCode, data);
80
-
81
- if (requestCode == ADD_TASK_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
82
- // 追加されたタスク情報を取得
83
- String taskName = data.getStringExtra("taskName");
84
- String dateTime = data.getStringExtra("dateTime");
85
-
86
- // デバッグのためにログを出力
87
- Log.d("TaskAdded", "Task added: " + taskName + " at " + dateTime);
88
-
89
- // TODO: taskList に追加する処理を実装
90
-
91
- Task task = new Task(taskName, dateTime);
92
- addTask(task);
93
- }
94
- }
95
-
96
- private void setupBackButton() {
104
+ void removeTask(int position) {
97
- ImageButton btBackStudy = findViewById(R.id.btBackTodo);
98
- btBackStudy.setOnClickListener(v -> {
99
- // 戻るボタンがクリックされた時の処理
100
- Toast.makeText(Todo.this, "戻るボタンがクリックされました", Toast.LENGTH_SHORT).show();
101
-
102
- // MainActivityに戻るためのIntentを設定
103
- Intent intent = new Intent(Todo.this, MainActivity.class);
104
- startActivity(intent);
105
- });
106
- }
107
-
108
- private void setupAddButton() {
109
- ImageButton btAdd = findViewById(R.id.btAdd);
110
- btAdd.setOnClickListener(v -> {
111
- // 追加ボタンがクリックされた時の処理
112
- Toast.makeText(Todo.this, "追加ボタンがクリックされました", Toast.LENGTH_SHORT).show();
113
-
114
- // AddTaskActivityに遷移するためのIntentを設定
115
- Intent intent = new Intent(Todo.this, AddTaskActivity.class);
116
- addTaskLauncher.launch(intent);
105
+ taskList.remove(position);
117
- });
118
- }
119
- }
120
-
121
-
122
-
123
-
124
-
125
- また、次がTaskAdapter.javaです
126
-
127
- package com.example.studytodo;
106
+ notifyItemRemoved(position);
128
-
129
- import android.content.Context;
130
- import android.util.Log;
131
- import android.view.LayoutInflater;
132
- import android.view.View;
133
- import android.view.ViewGroup;
134
- import android.widget.TextView;
135
-
136
- import androidx.annotation.NonNull;
137
- import androidx.recyclerview.widget.RecyclerView;
138
-
139
- import java.util.List;
140
-
141
- public class TaskAdapter extends RecyclerView.Adapter<TaskAdapter.ViewHolder> {
142
-
143
- private List<Task> taskList;
144
-
145
- public TaskAdapter(List<Task> taskList) {
107
+ notifyItemRangeChanged(position, taskList.size());
146
- this.taskList = taskList;
147
108
  }
148
109
 
149
110
  @NonNull
150
111
  @Override
151
112
  public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
152
- Context context = parent.getContext();
153
- LayoutInflater inflater = LayoutInflater.from(context);
154
-
155
- // タスクのアイテムレイアウトをインフレート
156
- View taskView = inflater.inflate(R.layout.task_item, parent, false);
157
-
158
- // インフレートされたビューをViewholderに渡す
159
- return new ViewHolder(taskView);
113
+ return new ViewHolder(parent);
160
114
  }
161
115
 
162
116
  @Override
163
117
  public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
164
- // データを取得
165
- Task task = taskList.get(position);
166
-
167
- // ビューホルダーのビューにデータを設定
168
- holder.taskNameTextView.setText(task.getTaskName());
169
- holder.dateTimeTextView.setText(task.getDateTime());
170
-
171
- // デバッグのためにログを出力
172
118
  Log.d("AdapterDebug", "onBindViewHolder called for position: " + position);
119
+ holder.bind(taskList.get(position));
173
120
  }
174
121
 
175
122
  @Override
@@ -177,140 +124,164 @@
177
124
  return taskList.size();
178
125
  }
179
126
 
180
- public class ViewHolder extends RecyclerView.ViewHolder {
127
+ static class ViewHolder extends RecyclerView.ViewHolder {
181
-
182
- public TextView taskNameTextView;
128
+ private final TextView taskName, dateTime;
183
- public TextView dateTimeTextView;
129
+
184
-
185
- public ViewHolder(@NonNull View itemView) {
130
+ public ViewHolder(@NonNull ViewGroup parent) {
186
- super(itemView);
131
+ super(LayoutInflater.from(parent.getContext()).inflate(R.layout.task_item, parent, false));
187
-
188
- // ビューホルダー内の各ビューを取得
189
- taskNameTextView = itemView.findViewById(R.id.taskNameTextView);
132
+ taskName = itemView.findViewById(R.id.taskNameTextView);
190
- dateTimeTextView = itemView.findViewById(R.id.dateTimeTextView);
133
+ dateTime = itemView.findViewById(R.id.dateTimeTextView);
191
134
  }
192
- }
193
- }
194
-
195
-
196
-
197
- 次がAddTaskActivity.javaです
198
-
199
- package com.example.studytodo;
200
-
201
- import android.app.DatePickerDialog;
202
- import android.app.TimePickerDialog;
203
- import android.content.Intent;
204
- import android.os.Bundle;
135
+ void bind(Task task) {
205
- import android.widget.Button;
206
- import android.widget.EditText;
207
- import androidx.appcompat.app.AppCompatActivity;
208
- import java.util.Calendar;
209
-
210
-
211
- public class AddTaskActivity extends AppCompatActivity {
212
-
213
- private EditText editTextTaskName;
136
+ taskName.setText(task.taskName);
214
- private EditText editTextDateTime;
215
-
216
- @Override
217
- protected void onCreate(Bundle savedInstanceState) {
218
- super.onCreate(savedInstanceState);
219
- setContentView(R.layout.addtask);
220
-
221
- editTextTaskName = findViewById(R.id.editTextTaskName);
222
- editTextDateTime = findViewById(R.id.editTextDateTime);
223
-
224
- Button saveButton = findViewById(R.id.btSave);
225
-
226
- editTextDateTime.setOnClickListener(v -> showDateTimePickerDialog());
227
- saveButton.setOnClickListener(v -> saveTask());
228
- }
229
-
230
- private void showDateTimePickerDialog() {
231
- Calendar calendar = Calendar.getInstance();
232
-
233
- int currentYear = calendar.get(Calendar.YEAR);
234
- int currentMonth = calendar.get(Calendar.MONTH);
235
- int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
236
- int currentHour = calendar.get(Calendar.HOUR_OF_DAY);
237
- int currentMinute = calendar.get(Calendar.MINUTE);
238
-
239
- DatePickerDialog datePickerDialog = new DatePickerDialog(
240
- this,
241
- (view, year, month, dayOfMonth) -> {
242
- TimePickerDialog timePickerDialog = new TimePickerDialog(
243
- this,
244
- (view1, hourOfDay, minute) -> {
245
- // 日付と時間が選択されたときの処理
246
- String selectedDateTime = year + "/" + (month + 1) + "/" + dayOfMonth +
247
- " " + hourOfDay + ":" + minute;
248
-
249
- editTextDateTime.setText(selectedDateTime);
137
+ dateTime.setText(task.getDateTime());
250
- },
251
- currentHour,
252
- currentMinute,
253
- true
254
- );
255
- timePickerDialog.show();
256
- },``````ここに言語を入力
257
- ここに言語を入力
258
- ```
259
- コード
260
- ```
261
- currentYear,
262
- currentMonth,
263
- currentDay
264
- );
265
- datePickerDialog.show();
266
- }
267
-
268
- private void saveTask() {
269
- // 保存ボタンが押されたときの処理
270
- // 入力された情報を取得
271
- String taskName = editTextTaskName.getText().toString(); // タスク名を取得
272
- String dateTime = editTextDateTime.getText().toString(); // 選択された日時を取得
273
-
274
- // 結果をセットしてアクティビティを終了
275
- Intent resultIntent = new Intent();
276
- resultIntent.putExtra("taskName", taskName);
277
- resultIntent.putExtra("dateTime", dateTime);
278
- setResult(RESULT_OK, resultIntent);
279
-
280
- if (getParent() != null && getParent() instanceof Todo) {
281
- Todo todoActivity = (Todo) getParent();
282
- todoActivity.addTask(new Task(taskName, dateTime));
283
138
  }
284
-
285
- finish();
286
- }
139
+ }
287
- }
140
+ }
288
-
289
-
290
- 次がTask.javaです
141
+
291
- package com.example.studytodo;
142
+ class Task implements Serializable {
292
- public class Task {
143
+ static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
144
+
293
- private String taskName;
145
+ final String taskName;
294
- private String dateTime;
146
+ final LocalDateTime dateTime;
295
-
147
+
296
- public Task(String taskName, String dateTime) {
148
+ public Task(String taskName, LocalDateTime dateTime) {
297
149
  this.taskName = taskName;
298
150
  this.dateTime = dateTime;
299
151
  }
300
-
301
- public String getTaskName() {
152
+ String getDateTime() {
302
- return taskName;
153
+ return formatter.format(dateTime);
303
- }
154
+ }
155
+
304
-
156
+ @Override
305
- public String getDateTime() {
157
+ public String toString() {
306
- return dateTime;
158
+ return taskName + " at " + getDateTime();
307
- }
159
+ }
308
- }
160
+ }
161
+
162
+
163
+
309
-
164
+ ```
310
-
165
+ 次がAddTaskFragment.javaです
166
+ ```
167
+ package com.example.studytodo;
168
+
169
+ import androidx.annotation.*;
170
+ import androidx.appcompat.app.AlertDialog;
171
+ import androidx.fragment.app.DialogFragment;
172
+
173
+ import android.app.*;
174
+ import android.os.Bundle;
175
+ import android.view.*;
176
+ import android.widget.*;
177
+
178
+ import java.time.*;
179
+
180
+ public class AddTaskFragment extends DialogFragment {
181
+ static final String REQUEST_KEY = "AddTaskFragment";
182
+ static final String RESULTKEY_TASK = "task";
183
+
184
+ private EditText nameView, datetimeView;
185
+ private LocalDateTime datetime;
186
+
187
+ @NonNull
188
+ @Override
189
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
190
+ View view = LayoutInflater.from(requireContext()).inflate(R.layout.fragment_add_task, null);
191
+
192
+ datetime = LocalDateTime.now();
193
+
194
+ nameView = view.findViewById(R.id.editTextTaskName);
195
+ datetimeView = view.findViewById(R.id.editTextDateTime);
196
+ datetimeView.setOnClickListener(v -> showDatePickerDialog());
197
+
198
+ return new AlertDialog.Builder(requireContext())
199
+ .setTitle("Add Task")
200
+ .setView(view)
201
+ .setPositiveButton("保存", (d, w) -> {
202
+ String name = nameView.getText().toString();
203
+ Bundle result = new Bundle();
204
+ result.putSerializable(RESULTKEY_TASK, new Task(name, datetime));
205
+ getParentFragmentManager().setFragmentResult(REQUEST_KEY, result);
206
+ dismiss();
207
+ })
208
+ .setNegativeButton("キャンセル", (d, w) -> dismiss())
209
+ .create();
210
+ }
211
+
212
+ private void showDatePickerDialog() {
213
+ DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), (v, y, m, d) -> { //m: 0-11
214
+ datetime = datetime.with(LocalDate.of(y, m+1, d)); //m: 1-12
215
+ showTimePickerDialog();
216
+ }, datetime.getYear(), datetime.getMonthValue()-1, datetime.getDayOfMonth()); //m: 0-11
217
+ datePickerDialog.show();
218
+ }
219
+
220
+ private void showTimePickerDialog() {
221
+ TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), (v, h, m) -> {
222
+ datetime = datetime.with(LocalTime.of(h, m));
223
+ datetimeView.setText(Task.formatter.format(datetime));
224
+ }, datetime.getHour(), datetime.getMinute(), true);
225
+ timePickerDialog.show();
226
+ }
227
+ }
228
+ ```
229
+ 次がTodoViewModel.javaです
230
+ ```
231
+ package com.example.studytodo;
232
+
233
+ import androidx.lifecycle.ViewModel;
234
+ import androidx.lifecycle.MutableLiveData;
235
+
236
+ public class TodoViewModel extends ViewModel {
237
+ private MutableLiveData<Task> addedTask = new MutableLiveData<>();
238
+
239
+ public void setAddedTask(Task task) {
240
+ addedTask.setValue(task);
241
+ }
242
+
243
+ public MutableLiveData<Task> getAddedTask() {
244
+ return addedTask;
245
+ }
246
+ }
247
+ ```
248
+ task_item.xml
249
+ ```
250
+ <!-- task_item.xml -->
251
+ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
252
+ xmlns:app="http://schemas.android.com/apk/res-auto"
253
+ android:layout_width="match_parent"
254
+ android:layout_height="wrap_content"
255
+ android:padding="10dp">
256
+
257
+ <TextView
258
+ android:id="@+id/taskNameTextView"
259
+ android:layout_width="0dp"
260
+ android:layout_height="wrap_content"
261
+ app:layout_constraintEnd_toEndOf="parent"
262
+ app:layout_constraintStart_toStartOf="parent"
263
+ app:layout_constraintTop_toTopOf="parent" />
264
+ <TextView
265
+ android:id="@+id/dateTimeTextView"
266
+ android:layout_width="0dp"
267
+ android:layout_height="wrap_content"
268
+ app:layout_constraintEnd_toEndOf="parent"
269
+ app:layout_constraintStart_toStartOf="parent"
270
+ app:layout_constraintTop_toBottomOf="@id/taskNameTextView" />
271
+
272
+ <ImageButton
273
+ android:id="@+id/deleteButton"
274
+ android:layout_width="wrap_content"
275
+ android:layout_height="wrap_content"
276
+ app:layout_constraintEnd_toEndOf="parent"
277
+ app:layout_constraintTop_toBottomOf="@id/dateTimeTextView"
278
+ android:src="@drawable/baseline_clear_24"
279
+ android:background="?android:attr/selectableItemBackgroundBorderless" />
280
+
281
+ </androidx.constraintlayout.widget.ConstraintLayout>
282
+ ```
311
283
 
312
284
  ### 試したこと
313
285
 
314
- logを書いて、どこまで成功しているかを見ていたすが、おそらく情報を読み取るところま行けたと思うので、やはりtodo.xml表示させることだけできていないと考えてい
286
+ 前回回答していただいたときにFragmentを利用したら簡単にるとコード付き教えもらっとで、Todoリストタスクを追加することできました
315
- 対処法を知っている方がいれば教えてほしいです。
316
- レイアウトのコドまで送る文字数がオーバーしてしまっため送れせんでした
287
+ 今現在はタスクを追加した後に削除マクを付け、押す追加たタスクを削除し画面から消えるようにしたいと考えてい