回答編集履歴

2

コメントへの回答追記

2020/12/15 11:24

投稿

razuma
razuma

スコア1313

test CHANGED
@@ -195,3 +195,27 @@
195
195
 
196
196
 
197
197
  以上、よろしくお願いいたします。
198
+
199
+
200
+
201
+ ===追記
202
+
203
+ そのままコピーするだけだとエラーになってました。以下、修正点です。
204
+
205
+
206
+
207
+ ```
208
+
209
+ class MainActivity: AppCompatActivity() {
210
+
211
+
212
+
213
+ override fun onCreate(savedInstanceState: Bundle?) {
214
+
215
+ super.onCreate(savedInstanceState)
216
+
217
+ // setContentView(R.layout.activity_test3)
218
+
219
+ setContentView(R.layout.activity_main)
220
+
221
+ ```

1

追記

2020/12/15 11:24

投稿

razuma
razuma

スコア1313

test CHANGED
@@ -27,3 +27,171 @@
27
27
 
28
28
 
29
29
  また、不明点や何かありましたらコメントをお願いいたします。
30
+
31
+
32
+
33
+ ===
34
+
35
+ 2020/12/13 01:33コメントに対する追記:
36
+
37
+ nextButton.setOnClickListener{ }でMainActivityにstartActivityをしてやって、何回連勝しているかを値で渡してやって、ある連勝まで達していたら連勝や連敗と止めると言う処理ではダメでしょうか。SharedPreferencesを使っているのであればそこに保存しておいても良いかもしれません。
38
+
39
+
40
+
41
+ MainActivity
42
+
43
+ ```
44
+
45
+ class MainActivity: AppCompatActivity() {
46
+
47
+
48
+
49
+ override fun onCreate(savedInstanceState: Bundle?) {
50
+
51
+ super.onCreate(savedInstanceState)
52
+
53
+ setContentView(R.layout.activity_test3)
54
+
55
+
56
+
57
+ gu.setOnClickListener{ onJankenButtonTapped(it) }
58
+
59
+ choki.setOnClickListener { onJankenButtonTapped(it) }
60
+
61
+ pa.setOnClickListener { onJankenButtonTapped(it) }
62
+
63
+
64
+
65
+ val pref= PreferenceManager.getDefaultSharedPreferences(this)
66
+
67
+ pref.edit {
68
+
69
+ clear()
70
+
71
+ }
72
+
73
+ }
74
+
75
+ fun onJankenButtonTapped(view: View1?){
76
+
77
+ // 連勝、連敗を渡す
78
+
79
+ val streak = this.intent.getIntExtra("streak", 0)
80
+
81
+
82
+
83
+ val intent = Intent(this, ResultActivity::class.java)
84
+
85
+ intent.putExtra("MY_HAND", view?.id)
86
+
87
+ intent.putExtra("streak", streak)
88
+
89
+ startActivity(intent)
90
+
91
+ }
92
+
93
+ }
94
+
95
+ ```
96
+
97
+ ResultActivity
98
+
99
+ ```
100
+
101
+ var streak = intent.getIntExtra("streak", 0)
102
+
103
+
104
+
105
+ when (gameResult) {
106
+
107
+ 0 -> {
108
+
109
+ resultLabel.setText(R.string.result_draw) // 引き分け
110
+
111
+
112
+
113
+ // 引き分けの場合はカウントを0に戻す
114
+
115
+ streak = 0
116
+
117
+ }
118
+
119
+ 1 -> {
120
+
121
+ resultLabel.setText(R.string.result_win) // 勝った場合
122
+
123
+
124
+
125
+ // 連敗中の場合は値を0に戻す
126
+
127
+ if(streak < 0){
128
+
129
+ streak = 0
130
+
131
+ }
132
+
133
+
134
+
135
+ streak += 1
136
+
137
+ }
138
+
139
+ 2 -> {
140
+
141
+ // 連勝中の場合は値を0に戻す
142
+
143
+ if(streak > 0){
144
+
145
+ streak = 0
146
+
147
+ }
148
+
149
+
150
+
151
+ streak -= 1
152
+
153
+
154
+
155
+ resultLabel.setText(R.string.result_lose) // 負けた場合
156
+
157
+ }
158
+
159
+ }
160
+
161
+
162
+
163
+ // TODO: プログラム終了。何がしたいか、NEXTの遷移先を変えたい?それとも表示を変えたい?
164
+
165
+ if(streak >= 3 || streak <= -3){
166
+
167
+ Log.d("TEST", "ゲーム終了")
168
+
169
+ }
170
+
171
+
172
+
173
+ nextButton.setOnClickListener {
174
+
175
+ val intent = Intent(this, MainActivity::class.java)
176
+
177
+ intent.putExtra("streak", streak)
178
+
179
+ // TODO: Activityが積まれ続けるのを回避。画面の構成を考える必要があれば修正する
180
+
181
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
182
+
183
+ startActivity(intent)
184
+
185
+ }
186
+
187
+ ```
188
+
189
+ 上記のような遷移で目的は達成できないでしょうか。
190
+
191
+
192
+
193
+ また、蛇足であるかもしれませんが、同じAcitivty内でパーツの表示、非表示を切り替えて入力画面と結果画面にする方法やFragmentを使う方法なんかも考えられるかと思います。
194
+
195
+
196
+
197
+ 以上、よろしくお願いいたします。