kotlinでPassword生成アプリ作成してみる
はじめに
パスワードを毎回考えるのが面倒だったので、簡易なアプリを作成しました。 サービス名とパスワードを紐づけることができます。
後々、sqliteなどでローカルに保存できるように適応させていく予定です!
コード
めちゃ未熟ですが、よくなる方法。悪い点などがあればご指摘いただければ幸いです!
MainActivity.kt
class MainActivity : AppCompatActivity(){ val UpcaseList = "ABCDEFGHIJKLMNOPQRSTUVWYZ" val DowncaseList = "abcdefghijklmnopqrstuvwyz" val NumberList = "0123456789" var passwordList = "" var password = "" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val serviceEdit:EditText = findViewById(R.id.serviceEdit) val UpcaseCheckBox:CheckBox = findViewById(R.id.UpcaseCheckBox) val DowncaseCheckBox:CheckBox = findViewById(R.id.DowncaseCheckBox) val numberCheckBox:CheckBox = findViewById(R.id.NumberCheckBox) val generateButton:Button = findViewById(R.id.generateButton) generateButton.setOnClickListener { if(serviceEdit.text.toString() == ""){ serviceEdit.error = "サービス名を入力してください" }else{ VerifyCheckbox(UpcaseCheckBox, DowncaseCheckBox, NumberCheckBox) createPassword() Log.d("xdfghjkl",password) val intent = Intent(this,ShowPasswordActivity::class.java) intent.putExtra("PASSWORD",password) intent.putExtra("SERVICE",serviceEdit.text.toString()) startActivity(intent) } } } //Checkboxの状態確認 fun VerifyCheckbox(UpcaseCheckBox:CheckBox,DowncaseCheckBox:CheckBox,NumberCheckBox:CheckBox){ initPass() if(UpcaseCheckBox.isChecked == true) { passwordList += UpcaseList } if(DowncaseCheckBox.isChecked == true){ passwordList += DowncaseList } if(NumberCheckBox.isChecked == true){ passwordList += NumberList } } //ボタン押下時のCheckBoxの初期化 fun initPass(){ password = "" passwordList = "" } fun createPassword(){ //8文字パスワードの生成 for(i in 0..8){ var randomIndex = Random.nextInt(passwordList.length) password += passwordList[randomIndex] } } }
気にした点
- いいコードがわからないですが、oncreate内がごちゃごちゃになりすぎるのはダメかな?と思って、出来るだけメソッドとして切り出してみました。
詰まった点
xmlファイルとActivityクラスを別々に作成したので、追加で保存したクラスをManifestファイルに書き忘れて、intentで遷移できんなかった。。
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> //ここから追記 <activity android:name=".ShowPasswordActivity"> </activity> //ここまで </application>
まだ、単純なものしか作れないのでもっと作っていく!