回答編集履歴

4

追記

2019/01/21 10:25

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -184,4 +184,4 @@
184
184
 
185
185
 
186
186
 
187
- 本当はこういう丸写しで解決できてしまう回答をすることは、私が他の回答者から邪道だと言われても仕方ないものだということをご理解くださいね。
187
+ 本当はこういう丸写しで解決できてしまう回答をすることは、私が他の回答者から邪道だと言われても仕方ないものだということをご理解くださいね。本来、最初の回答で初心者であっても理解できなければならない内容のはずです。

3

丸写しできる回答

2019/01/21 10:25

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -91,3 +91,97 @@
91
91
 
92
92
 
93
93
  `button.setOnClickListener`ではエラーにならなかったとのことですが、これはレイアウトXMLファイルにbuttonというIDを付けたコンポーネントが存在していたからではありませんか?
94
+
95
+
96
+
97
+ ---
98
+
99
+
100
+
101
+ Activityのど真ん中に置いたボタンにbutton2というIDを付けて、このボタンを押したときにSecondActivityに遷移するコードです。なお、Kotlinコードからは1行目のpackage文だけ除いています。
102
+
103
+
104
+
105
+ ```xml
106
+
107
+ <?xml version="1.0" encoding="utf-8"?>
108
+
109
+ <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
110
+
111
+ xmlns:app="http://schemas.android.com/apk/res-auto"
112
+
113
+ xmlns:tools="http://schemas.android.com/tools"
114
+
115
+ android:layout_width="match_parent"
116
+
117
+ android:layout_height="match_parent"
118
+
119
+ tools:context=".MainActivity">
120
+
121
+
122
+
123
+ <Button
124
+
125
+ android:id="@+id/button2"
126
+
127
+ android:layout_width="wrap_content"
128
+
129
+ android:layout_height="wrap_content"
130
+
131
+ android:text="Button"
132
+
133
+ app:layout_constraintBottom_toBottomOf="parent"
134
+
135
+ app:layout_constraintEnd_toEndOf="parent"
136
+
137
+ app:layout_constraintStart_toStartOf="parent"
138
+
139
+ app:layout_constraintTop_toTopOf="parent" />
140
+
141
+ </android.support.constraint.ConstraintLayout>
142
+
143
+ ```
144
+
145
+
146
+
147
+ ```kotlin
148
+
149
+ import android.content.Intent
150
+
151
+ import android.os.Bundle
152
+
153
+ import android.support.v7.app.AppCompatActivity
154
+
155
+ import kotlinx.android.synthetic.main.activity_main.*
156
+
157
+
158
+
159
+ class MainActivity : AppCompatActivity() {
160
+
161
+
162
+
163
+ override fun onCreate(savedInstanceState: Bundle?) {
164
+
165
+ super.onCreate(savedInstanceState)
166
+
167
+ setContentView(R.layout.activity_main)
168
+
169
+
170
+
171
+ button2.setOnClickListener {
172
+
173
+ val intent = Intent(this, SecondActivity::class.java)
174
+
175
+ startActivity(intent)
176
+
177
+ }
178
+
179
+ }
180
+
181
+ }
182
+
183
+ ```
184
+
185
+
186
+
187
+ 本当はこういう丸写しで解決できてしまう回答をすることは、私が他の回答者から邪道だと言われても仕方ないものだということをご理解くださいね。

2

追加

2019/01/21 10:24

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -58,6 +58,14 @@
58
58
 
59
59
 
60
60
 
61
+ setOnClickListenerはButtonクラスに属するメソッドです。ですから、変数がButton型でなければ使えません。上記のKotlinコードでは、buttonという変数がButton型として扱われているためにsetOnClickListenerを用いることができます。
62
+
63
+
64
+
65
+ ---
66
+
67
+
68
+
61
69
  ここからが主題ですが、エラーになっているコードを見ると
62
70
 
63
71
 

1

修正

2019/01/19 07:14

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -78,7 +78,7 @@
78
78
 
79
79
  ```
80
80
 
81
- のような記述をされているのだろうと思います(ボタンのラベルとするため?)。しかし、述のimport文を記述すると、このstrings.xmlの情報を参照しようとしてしまうため、コンパイラーはbutton2という名前をButtonコンポーネントとして取り扱ってくれません。そのためにエラーとなっています。
81
+ のような記述をされているのだろうと思います(ボタンのラベルとするため?)。しかし、このような状況で前述のimport文を記述すると、このstrings.xmlの情報を参照しようとしてしまうため、コンパイラーはbutton2という名前をe.masaya.myapplication.R.string.button2という完全修飾名の変数として扱い、Buttonコンポーネントとして取り扱ってくれません(R.xxx.yyyの形式で表現されるのは全てint型変数です)。そのためにエラーとなっています。
82
82
 
83
83
 
84
84