前提・実現したいこと
ToDoアプリをKotlinで作成したくて、以下の記事を参考にしており、大変わかりやすいのですが、layout以外のプログラムがJavaで書かれており、AndroidStudioのKotlin自動翻訳にかけると、エラーだらけになってしまい、Javaで書かれたコードをKotlinにする方法を探しています。
Firebaseの設定は問題なくできています。
Kotlinの資料はまだ少ないこともあり、どうにかしてJavaで書かれたコードをKotlinにしたいのですが、自動翻訳でも全体的にエラーが出る場合、どうすればいいでしょうか。
【Android】Firebaseを利用したToDoアプリ開発
発生している問題・エラーメッセージ
このように、赤くエラーに染まる部分が多すぎて、Kotlinのコードで似た部分のあるものは、試したことに明記したように一部修正しましたが、今回実行したいプロジェクトでは
- AddActivity.java
- CustomAdapter.java
- LoginActivity.java
- MainActivity.java
- ToDoActivity.java
- ToDoData.java
という6つのJavaプログラムがあり、これを全てJavaからKotlinにするだけの十分な知識がなく、自動翻訳ではエラーが出るので、困っています。
該当のソースコード
元々Javaで書かれたもの(文字数の関係で、質問に掲載することができませんでしたので、githubのURLを掲載します)
MainActivity.java
自動翻訳でJavaからKotlinにされたもの
MainActivity.kt
kotlin
1import android.app.AlertDialog; 2import android.content.Intent; 3import android.os.Bundle; 4import android.support.annotation.NonNull; 5import android.support.v7.app.AppCompatActivity; 6import android.text.TextUtils; 7import android.util.Log; 8import android.view.View; 9import android.widget.EditText; 10import android.widget.Toast; 11 12import com.google.android.gms.tasks.OnCompleteListener; 13import com.google.android.gms.tasks.Task; 14import com.google.firebase.auth.AuthResult; 15import com.google.firebase.auth.FirebaseAuth; 16 17public class MainActivity extends AppCompatActivity { 18 EditText emailFormEditText, passwordFormEditText; 19 public Intent data; 20 public FirebaseAuth mAuth; 21 private static final String TAG = "EmailPassword"; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_main); 27 28 emailFormEditText = (EditText) findViewById(R.id.email_log_in_edit_text); 29 passwordFormEditText = (EditText) findViewById(R.id.password_log_in_edit_text); 30 31 mAuth = FirebaseAuth.getInstance(); 32 } 33 34 public boolean checkEmpty() { 35 if (TextUtils.isEmpty(emailFormEditText.getText())) { 36 Log.d("MainActivity", "何も記入されていません"); 37 return false; 38 } 39 40 if (TextUtils.isEmpty(passwordFormEditText.getText())) { 41 Log.d("MainActivity", "何も記入されていません"); 42 return false; 43 } 44 return true; 45 } 46 47 public void loginMailButton(View v) { 48 signIn(emailFormEditText.getText().toString(), passwordFormEditText.getText().toString()); 49 setResult(RESULT_OK, data); 50 } 51 52 public void addMailButton(View v) { 53 createAccount(emailFormEditText.getText().toString(), passwordFormEditText.getText().toString()); 54 setResult(RESULT_OK, data); 55 } 56 57 private void createAccount(String email, String password) { 58 Log.d(TAG, "createAccount:" + email); 59 60 if (!checkEmpty()) { 61 return; 62 } 63 64 mAuth.createUserWithEmailAndPassword(email, password) 65 .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 66 @Override 67 public void onComplete(@NonNull Task<AuthResult> task) { 68 if (task.isSuccessful()) { 69 // ログインに成功したら、ログインしたユーザーの情報でUIを更新します。 70 Log.d(TAG, "createUserWithEmail:success"); 71 Toast.makeText(MainActivity.this, "新規作成に成功しました!", Toast.LENGTH_SHORT).show(); 72 changeActivity(); 73 } else { 74 // サインインに失敗した場合は、ユーザーにメッセージを表示します。 75 Log.w(TAG, "createUserWithEmail:failure", task.getException()); 76 Toast.makeText(MainActivity.this, "Authentication failed.", 77 Toast.LENGTH_SHORT).show(); 78 } 79 80 } 81 }); 82 } 83 84 private void signIn(String email, String password) { 85 Log.d(TAG, "signIn:" + email); 86 87 if (!checkEmpty()) { 88 return; 89 } 90 91 mAuth.signInWithEmailAndPassword(email, password) 92 .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 93 @Override 94 public void onComplete(@NonNull Task<AuthResult> task) { 95 if (task.isSuccessful()) { 96 // ログインに成功したら、ログインしたユーザーの情報でUIを更新します。 97 Log.d(TAG, "signInWithEmail:success"); 98 Toast.makeText(MainActivity.this, "ログインに成功しました!", Toast.LENGTH_SHORT).show(); 99 changeActivity(); 100 } else { 101 // サインインに失敗した場合は、ユーザーにメッセージを表示します。 102 Log.w(TAG, "signInWithEmail:failure", task.getException()); 103 104 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 105 builder.setMessage(task.getException().getMessage()) 106 .setTitle("Error!") 107 .setPositiveButton(android.R.string.ok, null); 108 AlertDialog dialog = builder.create(); 109 dialog.show(); 110 } 111 112 } 113 }); 114 } 115 116 private void changeActivity() { 117 Intent intent = new Intent(this, ToDoActivity.class); 118 startActivity(intent); 119 finish(); 120 } 121 122}
試したこと
Kotlinのコードで共通の部分は一部直しましたが、初見でJavaで書かれたコードはどのようにKotlinにすればいいのでしょうか。
kotlin
1class MainActivity : AppCompatActivity() { 2 EditText emailFormEditText, passwordFormEditText; 3 public Intent data; 4 public FirebaseAuth mAuth; 5 private static final String TAG = "EmailPassword"; 6 7 override fun onCreate(savedInstanceState: Bundle?) { 8 super.onCreate(savedInstanceState) 9 setContentView(R.layout.activity_main) 10 11 emailFormEditText = (EditText) findViewById(R.id.email_log_in_edit_text); 12 passwordFormEditText = (EditText) findViewById(R.id.password_log_in_edit_text); 13 14 mAuth = FirebaseAuth.getInstance(); 15 }


回答1件
あなたの回答
tips
プレビュー