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

回答編集履歴

1

コード追加

2019/04/30 08:55

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,1 +1,162 @@
1
- EditText から文字列を取得する方法をドキュメントからご確認頂くのが良いかと思います.
1
+ EditText から文字列を取得する方法をドキュメントからご確認頂くのが良いかと思います.
2
+
3
+ ----
4
+ 追記
5
+
6
+ 動作までは細かく問題があり一つずつの指摘ではバラバラになりそうので, 全体を fragment で再構成しました.
7
+ コメントで頂いた makequiz.xml には Button(@+id/makeQuiz_Button2) に onClick がありませんでしたので, ```android:onClick="makeQuiz2"``` を追加しました.
8
+
9
+ res/layout/fragment_base.xml
10
+ ```XML
11
+ <?xml version="1.0" encoding="utf-8"?>
12
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
13
+ android:layout_width="match_parent"
14
+ android:layout_height="match_parent"
15
+ android:orientation="vertical"
16
+ android:id="@+id/contents" />
17
+ ```
18
+ MainActivity.java
19
+ ```java
20
+ package com.test.quizmaker;
21
+
22
+ import android.os.Bundle;
23
+ import android.support.v4.app.FragmentManager;
24
+ import android.support.v7.app.AppCompatActivity;
25
+ import android.view.View;
26
+
27
+ import java.util.ArrayList;
28
+
29
+ public class MainActivity extends AppCompatActivity {
30
+ //private SharedPreferences dataStore;
31
+ private ArrayList data = new ArrayList<String>();
32
+ private FragmentManager fragmentManager;
33
+ private QuizListFragment quizListFragment;
34
+ private MakeQuizFragment makeQuizFragment;
35
+
36
+ @Override
37
+ protected void onCreate(Bundle savedInstanceState) {
38
+ super.onCreate(savedInstanceState);
39
+ setContentView(R.layout.fragment_base);
40
+
41
+ fragmentManager = getSupportFragmentManager();
42
+
43
+ setQuizListFragment();
44
+
45
+ //dataStore = getSharedPreferences("DataStore", MODE_PRIVATE);
46
+ }
47
+
48
+ private void setQuizListFragment() {
49
+ if(quizListFragment == null) quizListFragment = new QuizListFragment();
50
+ fragmentManager.beginTransaction().replace(R.id.contents, quizListFragment).commit();
51
+ }
52
+
53
+ private void setMakeQuizFragment() {
54
+ if(makeQuizFragment == null) makeQuizFragment = new MakeQuizFragment();
55
+ fragmentManager.beginTransaction().replace(R.id.contents, makeQuizFragment).commit();
56
+ }
57
+
58
+ public void makeQuiz(View view) {
59
+ setMakeQuizFragment();
60
+ }
61
+
62
+ public void makeQuiz2(View view) {
63
+ String quizTitle = makeQuizFragment.getTitle();
64
+ //String quizQuestion = makeQuizFragment.getQuestion();
65
+ //String quizAnswer = makeQuizFragment.getAnswer();
66
+ makeQuizFragment.clear();
67
+ data.add(quizTitle);
68
+ setQuizListFragment();
69
+
70
+ //入力文字列を"input"に書き込む
71
+ //Editor editor = dataStore.edit();
72
+ //editor.putString("input", String.valueOf(text));
73
+ //editor.apply();
74
+ }
75
+
76
+ ArrayList<String> getData() {
77
+ return data;
78
+ }
79
+ }
80
+ ```
81
+ QuizListFragment.java
82
+ ```java
83
+ package com.test.quizmaker;
84
+
85
+ import android.os.Bundle;
86
+ import android.support.annotation.Nullable;
87
+ import android.support.v4.app.Fragment;
88
+ import android.view.LayoutInflater;
89
+ import android.view.View;
90
+ import android.view.ViewGroup;
91
+ import android.widget.ArrayAdapter;
92
+ import android.widget.ListView;
93
+
94
+ import java.util.ArrayList;
95
+
96
+ public class QuizListFragment extends Fragment {
97
+ private ArrayAdapter<String> adapter;
98
+ private ListView listView;
99
+
100
+ @Override
101
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
102
+ View view = inflater.inflate(R.layout.activity_main, container, false);
103
+ listView = view.findViewById(R.id.listView);
104
+ return view;
105
+ }
106
+
107
+ @Override
108
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
109
+ super.onActivityCreated(savedInstanceState);
110
+
111
+ // リスト項目とListViewを対応付けるArrayAdapterを用意する
112
+ ArrayList<String> data = ((MainActivity)getActivity()).getData();
113
+ if(adapter == null) adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1);
114
+ else adapter.clear();
115
+ adapter.addAll(data);
116
+
117
+ // ListViewにArrayAdapterを設定する
118
+ listView.setAdapter(adapter);
119
+ }
120
+ }
121
+ ```
122
+ MakeQuizFragment.java
123
+ ```java
124
+ package com.test.quizmaker;
125
+
126
+ import android.os.Bundle;
127
+ import android.support.v4.app.Fragment;
128
+ import android.view.LayoutInflater;
129
+ import android.view.View;
130
+ import android.view.ViewGroup;
131
+ import android.widget.EditText;
132
+
133
+ public class MakeQuizFragment extends Fragment {
134
+ private EditText quizTitle;
135
+ private EditText quizQuestion;
136
+ private EditText quizAnswer;
137
+
138
+ @Override
139
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
140
+ View view = inflater.inflate(R.layout.makequiz, container, false);
141
+ quizTitle = view.findViewById(R.id.editText);
142
+ quizQuestion = view.findViewById(R.id.editText2);
143
+ quizAnswer = view.findViewById(R.id.editText3);
144
+ return view;
145
+ }
146
+
147
+ String getTitle() {
148
+ return quizTitle.getText().toString();
149
+ }
150
+ String getQuestion() {
151
+ return quizQuestion.getText().toString();
152
+ }
153
+ String getAnswer() {
154
+ return quizAnswer.getText().toString();
155
+ }
156
+ void clear() {
157
+ quizTitle.getText().clear();
158
+ quizQuestion.getText().clear();
159
+ quizAnswer.getText().clear();
160
+ }
161
+ }
162
+ ```