回答編集履歴

1

コード追加

2019/04/30 08:55

投稿

jimbe
jimbe

スコア12543

test CHANGED
@@ -1 +1,323 @@
1
1
  EditText から文字列を取得する方法をドキュメントからご確認頂くのが良いかと思います.
2
+
3
+
4
+
5
+ ----
6
+
7
+ 追記
8
+
9
+
10
+
11
+ 動作までは細かく問題があり一つずつの指摘ではバラバラになりそうので, 全体を fragment で再構成しました.
12
+
13
+ コメントで頂いた makequiz.xml には Button(@+id/makeQuiz_Button2) に onClick がありませんでしたので, ```android:onClick="makeQuiz2"``` を追加しました.
14
+
15
+
16
+
17
+ res/layout/fragment_base.xml
18
+
19
+ ```XML
20
+
21
+ <?xml version="1.0" encoding="utf-8"?>
22
+
23
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
24
+
25
+ android:layout_width="match_parent"
26
+
27
+ android:layout_height="match_parent"
28
+
29
+ android:orientation="vertical"
30
+
31
+ android:id="@+id/contents" />
32
+
33
+ ```
34
+
35
+ MainActivity.java
36
+
37
+ ```java
38
+
39
+ package com.test.quizmaker;
40
+
41
+
42
+
43
+ import android.os.Bundle;
44
+
45
+ import android.support.v4.app.FragmentManager;
46
+
47
+ import android.support.v7.app.AppCompatActivity;
48
+
49
+ import android.view.View;
50
+
51
+
52
+
53
+ import java.util.ArrayList;
54
+
55
+
56
+
57
+ public class MainActivity extends AppCompatActivity {
58
+
59
+ //private SharedPreferences dataStore;
60
+
61
+ private ArrayList data = new ArrayList<String>();
62
+
63
+ private FragmentManager fragmentManager;
64
+
65
+ private QuizListFragment quizListFragment;
66
+
67
+ private MakeQuizFragment makeQuizFragment;
68
+
69
+
70
+
71
+ @Override
72
+
73
+ protected void onCreate(Bundle savedInstanceState) {
74
+
75
+ super.onCreate(savedInstanceState);
76
+
77
+ setContentView(R.layout.fragment_base);
78
+
79
+
80
+
81
+ fragmentManager = getSupportFragmentManager();
82
+
83
+
84
+
85
+ setQuizListFragment();
86
+
87
+
88
+
89
+ //dataStore = getSharedPreferences("DataStore", MODE_PRIVATE);
90
+
91
+ }
92
+
93
+
94
+
95
+ private void setQuizListFragment() {
96
+
97
+ if(quizListFragment == null) quizListFragment = new QuizListFragment();
98
+
99
+ fragmentManager.beginTransaction().replace(R.id.contents, quizListFragment).commit();
100
+
101
+ }
102
+
103
+
104
+
105
+ private void setMakeQuizFragment() {
106
+
107
+ if(makeQuizFragment == null) makeQuizFragment = new MakeQuizFragment();
108
+
109
+ fragmentManager.beginTransaction().replace(R.id.contents, makeQuizFragment).commit();
110
+
111
+ }
112
+
113
+
114
+
115
+ public void makeQuiz(View view) {
116
+
117
+ setMakeQuizFragment();
118
+
119
+ }
120
+
121
+
122
+
123
+ public void makeQuiz2(View view) {
124
+
125
+ String quizTitle = makeQuizFragment.getTitle();
126
+
127
+ //String quizQuestion = makeQuizFragment.getQuestion();
128
+
129
+ //String quizAnswer = makeQuizFragment.getAnswer();
130
+
131
+ makeQuizFragment.clear();
132
+
133
+ data.add(quizTitle);
134
+
135
+ setQuizListFragment();
136
+
137
+
138
+
139
+ //入力文字列を"input"に書き込む
140
+
141
+ //Editor editor = dataStore.edit();
142
+
143
+ //editor.putString("input", String.valueOf(text));
144
+
145
+ //editor.apply();
146
+
147
+ }
148
+
149
+
150
+
151
+ ArrayList<String> getData() {
152
+
153
+ return data;
154
+
155
+ }
156
+
157
+ }
158
+
159
+ ```
160
+
161
+ QuizListFragment.java
162
+
163
+ ```java
164
+
165
+ package com.test.quizmaker;
166
+
167
+
168
+
169
+ import android.os.Bundle;
170
+
171
+ import android.support.annotation.Nullable;
172
+
173
+ import android.support.v4.app.Fragment;
174
+
175
+ import android.view.LayoutInflater;
176
+
177
+ import android.view.View;
178
+
179
+ import android.view.ViewGroup;
180
+
181
+ import android.widget.ArrayAdapter;
182
+
183
+ import android.widget.ListView;
184
+
185
+
186
+
187
+ import java.util.ArrayList;
188
+
189
+
190
+
191
+ public class QuizListFragment extends Fragment {
192
+
193
+ private ArrayAdapter<String> adapter;
194
+
195
+ private ListView listView;
196
+
197
+
198
+
199
+ @Override
200
+
201
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
202
+
203
+ View view = inflater.inflate(R.layout.activity_main, container, false);
204
+
205
+ listView = view.findViewById(R.id.listView);
206
+
207
+ return view;
208
+
209
+ }
210
+
211
+
212
+
213
+ @Override
214
+
215
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
216
+
217
+ super.onActivityCreated(savedInstanceState);
218
+
219
+
220
+
221
+ // リスト項目とListViewを対応付けるArrayAdapterを用意する
222
+
223
+ ArrayList<String> data = ((MainActivity)getActivity()).getData();
224
+
225
+ if(adapter == null) adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1);
226
+
227
+ else adapter.clear();
228
+
229
+ adapter.addAll(data);
230
+
231
+
232
+
233
+ // ListViewにArrayAdapterを設定する
234
+
235
+ listView.setAdapter(adapter);
236
+
237
+ }
238
+
239
+ }
240
+
241
+ ```
242
+
243
+ MakeQuizFragment.java
244
+
245
+ ```java
246
+
247
+ package com.test.quizmaker;
248
+
249
+
250
+
251
+ import android.os.Bundle;
252
+
253
+ import android.support.v4.app.Fragment;
254
+
255
+ import android.view.LayoutInflater;
256
+
257
+ import android.view.View;
258
+
259
+ import android.view.ViewGroup;
260
+
261
+ import android.widget.EditText;
262
+
263
+
264
+
265
+ public class MakeQuizFragment extends Fragment {
266
+
267
+ private EditText quizTitle;
268
+
269
+ private EditText quizQuestion;
270
+
271
+ private EditText quizAnswer;
272
+
273
+
274
+
275
+ @Override
276
+
277
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
278
+
279
+ View view = inflater.inflate(R.layout.makequiz, container, false);
280
+
281
+ quizTitle = view.findViewById(R.id.editText);
282
+
283
+ quizQuestion = view.findViewById(R.id.editText2);
284
+
285
+ quizAnswer = view.findViewById(R.id.editText3);
286
+
287
+ return view;
288
+
289
+ }
290
+
291
+
292
+
293
+ String getTitle() {
294
+
295
+ return quizTitle.getText().toString();
296
+
297
+ }
298
+
299
+ String getQuestion() {
300
+
301
+ return quizQuestion.getText().toString();
302
+
303
+ }
304
+
305
+ String getAnswer() {
306
+
307
+ return quizAnswer.getText().toString();
308
+
309
+ }
310
+
311
+ void clear() {
312
+
313
+ quizTitle.getText().clear();
314
+
315
+ quizQuestion.getText().clear();
316
+
317
+ quizAnswer.getText().clear();
318
+
319
+ }
320
+
321
+ }
322
+
323
+ ```