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

質問編集履歴

1

回答の御礼と気づき

2019/03/24 14:56

投稿

JoeyYuas
JoeyYuas

スコア13

title CHANGED
File without changes
body CHANGED
@@ -42,4 +42,34 @@
42
42
  すると、Kotlinでは`findViewById`が`Unresolved reference`になってしまいます。
43
43
  KotlinもJavaと同様、`AppCompatActivity`を継承しているので、そのメソッドを使えるのではないかと考えていたのですが、そのまま使うことができません。
44
44
 
45
- この理由をご教授いただけないでしょうか。
45
+ この理由をご教授いただけないでしょうか。
46
+
47
+ ***************************
48
+
49
+ ご回答ありがとうございます!
50
+ keicha_hrsさんのご提示いただいた方法で通りました!
51
+
52
+ また自分で試していて気づいたのですが、内部クラスから外のメソッドや変数などを使用したい場合、
53
+ Kotlinだと明示的に`inner`クラスであることを書かなければなりませんでした。
54
+
55
+ ```Kotlin
56
+ class Test : AppCompatActivity() {
57
+
58
+ override fun onCreate(savedInstanceState: Bundle?) {
59
+ super.onCreate(savedInstanceState)
60
+ setContentView(R.layout.activity_test)
61
+ }
62
+
63
+ private inner class HelloListener : View.OnClickListener {
64
+ override fun onClick(view: View?) {
65
+ val input : EditText = findViewById(R.id.etName)
66
+ }
67
+ }
68
+ }
69
+ ```
70
+
71
+ Javaではわざわざこんな書き方をしなくても内部クラスより外のクラスで定義されているメソッドや変数を呼び出すことができましたが、Kotlinでは`innner`と明記する必要があります。
72
+
73
+ Javaだと無意識にやっていたことも、Kotlinだと意識させられるので勉強になりました…
74
+
75
+ ありがとうございます!