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

回答編集履歴

2

コメントへの回答追記

2020/12/15 11:24

投稿

razuma
razuma

スコア1313

answer CHANGED
@@ -96,4 +96,16 @@
96
96
 
97
97
  また、蛇足であるかもしれませんが、同じAcitivty内でパーツの表示、非表示を切り替えて入力画面と結果画面にする方法やFragmentを使う方法なんかも考えられるかと思います。
98
98
 
99
- 以上、よろしくお願いいたします。
99
+ 以上、よろしくお願いいたします。
100
+
101
+ ===追記
102
+ そのままコピーするだけだとエラーになってました。以下、修正点です。
103
+
104
+ ```
105
+ class MainActivity: AppCompatActivity() {
106
+
107
+ override fun onCreate(savedInstanceState: Bundle?) {
108
+ super.onCreate(savedInstanceState)
109
+ // setContentView(R.layout.activity_test3)
110
+ setContentView(R.layout.activity_main)
111
+ ```

1

追記

2020/12/15 11:24

投稿

razuma
razuma

スコア1313

answer CHANGED
@@ -12,4 +12,88 @@
12
12
 
13
13
  上記で解決しないようであれば追加で全体のコードや情報などをいただければと思います。
14
14
 
15
- また、不明点や何かありましたらコメントをお願いいたします。
15
+ また、不明点や何かありましたらコメントをお願いいたします。
16
+
17
+ ===
18
+ 2020/12/13 01:33コメントに対する追記:
19
+ nextButton.setOnClickListener{ }でMainActivityにstartActivityをしてやって、何回連勝しているかを値で渡してやって、ある連勝まで達していたら連勝や連敗と止めると言う処理ではダメでしょうか。SharedPreferencesを使っているのであればそこに保存しておいても良いかもしれません。
20
+
21
+ MainActivity
22
+ ```
23
+ class MainActivity: AppCompatActivity() {
24
+
25
+ override fun onCreate(savedInstanceState: Bundle?) {
26
+ super.onCreate(savedInstanceState)
27
+ setContentView(R.layout.activity_test3)
28
+
29
+ gu.setOnClickListener{ onJankenButtonTapped(it) }
30
+ choki.setOnClickListener { onJankenButtonTapped(it) }
31
+ pa.setOnClickListener { onJankenButtonTapped(it) }
32
+
33
+ val pref= PreferenceManager.getDefaultSharedPreferences(this)
34
+ pref.edit {
35
+ clear()
36
+ }
37
+ }
38
+ fun onJankenButtonTapped(view: View1?){
39
+ // 連勝、連敗を渡す
40
+ val streak = this.intent.getIntExtra("streak", 0)
41
+
42
+ val intent = Intent(this, ResultActivity::class.java)
43
+ intent.putExtra("MY_HAND", view?.id)
44
+ intent.putExtra("streak", streak)
45
+ startActivity(intent)
46
+ }
47
+ }
48
+ ```
49
+ ResultActivity
50
+ ```
51
+ var streak = intent.getIntExtra("streak", 0)
52
+
53
+ when (gameResult) {
54
+ 0 -> {
55
+ resultLabel.setText(R.string.result_draw) // 引き分け
56
+
57
+ // 引き分けの場合はカウントを0に戻す
58
+ streak = 0
59
+ }
60
+ 1 -> {
61
+ resultLabel.setText(R.string.result_win) // 勝った場合
62
+
63
+ // 連敗中の場合は値を0に戻す
64
+ if(streak < 0){
65
+ streak = 0
66
+ }
67
+
68
+ streak += 1
69
+ }
70
+ 2 -> {
71
+ // 連勝中の場合は値を0に戻す
72
+ if(streak > 0){
73
+ streak = 0
74
+ }
75
+
76
+ streak -= 1
77
+
78
+ resultLabel.setText(R.string.result_lose) // 負けた場合
79
+ }
80
+ }
81
+
82
+ // TODO: プログラム終了。何がしたいか、NEXTの遷移先を変えたい?それとも表示を変えたい?
83
+ if(streak >= 3 || streak <= -3){
84
+ Log.d("TEST", "ゲーム終了")
85
+ }
86
+
87
+ nextButton.setOnClickListener {
88
+ val intent = Intent(this, MainActivity::class.java)
89
+ intent.putExtra("streak", streak)
90
+ // TODO: Activityが積まれ続けるのを回避。画面の構成を考える必要があれば修正する
91
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
92
+ startActivity(intent)
93
+ }
94
+ ```
95
+ 上記のような遷移で目的は達成できないでしょうか。
96
+
97
+ また、蛇足であるかもしれませんが、同じAcitivty内でパーツの表示、非表示を切り替えて入力画面と結果画面にする方法やFragmentを使う方法なんかも考えられるかと思います。
98
+
99
+ 以上、よろしくお願いいたします。