回答編集履歴

1

回答追記

2020/03/06 13:50

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -23,3 +23,253 @@
23
23
 
24
24
 
25
25
  質問の画像やご提示の変換結果はどうも見てもおかしく、単純にファイルのリネームを行っただけではないのか?と思えます。Android Studio上の操作でファイルの拡張子をjavaからktに変えてしまうことは可能ですが、それでは変換したことにはなりません。
26
+
27
+
28
+
29
+ ---
30
+
31
+ (回答追記)
32
+
33
+
34
+
35
+ コピーペーストでktファイルにJavaのソースコードを貼り付けることで変換を行うとき、下図のようなダイアログが出るはずですが、それは確認されていますか?
36
+
37
+
38
+
39
+ ![ダイアログ3](9f9f66523f414d183e503772a777a6bf.png)
40
+
41
+
42
+
43
+ 前述したように、Kotlinソースコードを扱うためにはKotlinが扱えるプロジェクトになっている必要があります。そうなっていないプロジェクト上で拡張子ktのファイルを作ってJavaソースコードを貼り付けても変換は実行されません。そういう状況になっているものと推察しています。
44
+
45
+
46
+
47
+ 私の手元で、確実に「Kotlinが扱えるプロジェクト」となっているプロジェクト上に用意したKotlinソースファイルに、リンク先にあったMainActivity.javaのソースファイルをコピーペーストしたら、下図のように変換されました。(import文部分省略)
48
+
49
+
50
+
51
+ ```kotlin
52
+
53
+ class MainActivity : AppCompatActivity() {
54
+
55
+ var emailFormEditText: EditText? = null
56
+
57
+ var passwordFormEditText: EditText? = null
58
+
59
+ var data: Intent? = null
60
+
61
+ var mAuth: FirebaseAuth? = null
62
+
63
+ override fun onCreate(savedInstanceState: Bundle?) {
64
+
65
+ super.onCreate(savedInstanceState)
66
+
67
+ setContentView(R.layout.activity_main)
68
+
69
+ emailFormEditText = findViewById<View>(R.id.email_log_in_edit_text) as EditText
70
+
71
+ passwordFormEditText = findViewById<View>(R.id.password_log_in_edit_text) as EditText
72
+
73
+ mAuth = FirebaseAuth.getInstance()
74
+
75
+ }
76
+
77
+
78
+
79
+ fun checkEmpty(): Boolean {
80
+
81
+ if (TextUtils.isEmpty(emailFormEditText!!.text)) {
82
+
83
+ Log.d("MainActivity", "何も記入されていません")
84
+
85
+ return false
86
+
87
+ }
88
+
89
+ if (TextUtils.isEmpty(passwordFormEditText!!.text)) {
90
+
91
+ Log.d("MainActivity", "何も記入されていません")
92
+
93
+ return false
94
+
95
+ }
96
+
97
+ return true
98
+
99
+ }
100
+
101
+
102
+
103
+ fun loginMailButton(v: View?) {
104
+
105
+ signIn(emailFormEditText!!.text.toString(), passwordFormEditText!!.text.toString())
106
+
107
+ setResult(Activity.RESULT_OK, data)
108
+
109
+ }
110
+
111
+
112
+
113
+ fun addMailButton(v: View?) {
114
+
115
+ createAccount(emailFormEditText!!.text.toString(), passwordFormEditText!!.text.toString())
116
+
117
+ setResult(Activity.RESULT_OK, data)
118
+
119
+ }
120
+
121
+
122
+
123
+ private fun createAccount(email: String, password: String) {
124
+
125
+ Log.d(TAG, "createAccount:$email")
126
+
127
+ if (!checkEmpty()) {
128
+
129
+ return
130
+
131
+ }
132
+
133
+ mAuth.createUserWithEmailAndPassword(email, password)
134
+
135
+ .addOnCompleteListener(this, object : OnCompleteListener<AuthResult?>() {
136
+
137
+ fun onComplete(task: Task<AuthResult?>) {
138
+
139
+ if (task.isSuccessful()) {
140
+
141
+ // ログインに成功したら、ログインしたユーザーの情報でUIを更新します。
142
+
143
+ Log.d(TAG, "createUserWithEmail:success")
144
+
145
+ Toast.makeText(this@MainActivity, "新規作成に成功しました!", Toast.LENGTH_SHORT).show()
146
+
147
+ changeActivity()
148
+
149
+ } else {
150
+
151
+ // サインインに失敗した場合は、ユーザーにメッセージを表示します。
152
+
153
+ Log.w(TAG, "createUserWithEmail:failure", task.getException())
154
+
155
+ Toast.makeText(this@MainActivity, "Authentication failed.",
156
+
157
+ Toast.LENGTH_SHORT).show()
158
+
159
+ }
160
+
161
+ }
162
+
163
+ })
164
+
165
+ }
166
+
167
+
168
+
169
+ private fun signIn(email: String, password: String) {
170
+
171
+ Log.d(TAG, "signIn:$email")
172
+
173
+ if (!checkEmpty()) {
174
+
175
+ return
176
+
177
+ }
178
+
179
+ mAuth.signInWithEmailAndPassword(email, password)
180
+
181
+ .addOnCompleteListener(this, object : OnCompleteListener<AuthResult?>() {
182
+
183
+ fun onComplete(task: Task<AuthResult?>) {
184
+
185
+ if (task.isSuccessful()) {
186
+
187
+ // ログインに成功したら、ログインしたユーザーの情報でUIを更新します。
188
+
189
+ Log.d(TAG, "signInWithEmail:success")
190
+
191
+ Toast.makeText(this@MainActivity, "ログインに成功しました!", Toast.LENGTH_SHORT).show()
192
+
193
+ changeActivity()
194
+
195
+ } else {
196
+
197
+ // サインインに失敗した場合は、ユーザーにメッセージを表示します。
198
+
199
+ Log.w(TAG, "signInWithEmail:failure", task.getException())
200
+
201
+ val builder: AlertDialog.Builder = Builder(this@MainActivity)
202
+
203
+ builder.setMessage(task.getException().getMessage())
204
+
205
+ .setTitle("Error!")
206
+
207
+ .setPositiveButton(R.string.ok, null)
208
+
209
+ val dialog: AlertDialog = builder.create()
210
+
211
+ dialog.show()
212
+
213
+ }
214
+
215
+ }
216
+
217
+ })
218
+
219
+ }
220
+
221
+
222
+
223
+ private fun changeActivity() {
224
+
225
+ val intent = Intent(this, ToDoActivity::class.java)
226
+
227
+ startActivity(intent)
228
+
229
+ finish()
230
+
231
+ }
232
+
233
+
234
+
235
+ companion object {
236
+
237
+ private const val TAG = "EmailPassword"
238
+
239
+ }
240
+
241
+ }
242
+
243
+ ```
244
+
245
+ 質問でご提示いただいたJavaソースコードがそのまま貼り付けられてしまったプロジェクトのbuild.gradle (Module: app)を開いたとき、
246
+
247
+
248
+
249
+ ```gradle
250
+
251
+ apply plugin: 'com.android.application'
252
+
253
+ apply plugin: 'kotlin-android'
254
+
255
+ apply plugin: 'kotlin-android-extensions'
256
+
257
+
258
+
259
+ (中略)
260
+
261
+
262
+
263
+ dependencies {
264
+
265
+ (中略)
266
+
267
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
268
+
269
+ (中略)
270
+
271
+ }
272
+
273
+ ```
274
+
275
+ のように、Kotlinのプラグインやライブラリーを利用するような記述が確認できるでしょうか?