④【Kotlin】RegisterActivity.kt
activity_register.xmlで送信ボタンしたら、WordPressのAPIのregister_user関数を呼び出して返り値を受け取ります
package com.example.application0210
class RegisterActivity : AppCompatActivity() {
private lateinit var prefs: PrefsManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_register)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.register)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
// MainへIntentで戻る
val btnGoToMain = findViewById<Button>(R.id.btnGoToMain)
btnGoToMain.setOnClickListener{
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
val etUsername = findViewById<EditText>(R.id.etUsername)
val etPassword = findViewById<EditText>(R.id.etPassword)
val btnRegister = findViewById<Button>(R.id.btnRegister)
prefs = PrefsManager(this)
btnRegister.setOnClickListener {
val username = etUsername.text.toString().trim()
val password = etPassword.text.toString().trim()
if (username.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "ユーザー名とパスワードを入力してください", Toast.LENGTH_LONG).show()
return@setOnClickListener
}
registerUser(username, password) { success, userId, userName ->
if (success) {
prefs.saveUserId(userId!!) // !!はuserIdがNULLでないと仮定し強制的にコードを実行させます
prefs.saveUserName(userName!!)
Toast.makeText(this, "登録成功: $userName", Toast.LENGTH_LONG).show()
startActivity(Intent(this, MainActivity::class.java))
finish()
} else {
prefs.saveUserId("NO USER ID")
prefs.saveUserName("NO USER NAME")
Toast.makeText(this, "登録失敗", Toast.LENGTH_LONG).show()
}
}
}
}
private fun registerUser(username: String, password: String, onComplete: (Boolean, String?, String?) -> Unit) {
val url = "https://azurlane.work/wp-json/custom-api/v1/register/"
val params = HashMap<String, String>()
params["username"] = username
params["password"] = password
val request = object : StringRequest(
POST, url,
Response.Listener { response ->
val json = JSONObject(response)
if (json.getString("status") == "success") {
val userId = json.optString("user_id", "")
val userName = json.optString("user_name", "")
if (userId.isNotEmpty() && userName.isNotEmpty()) {
onComplete(true, userId, userName)
} else {
Log.e("RegisterError", "レスポンスにユーザーIDが見つかりません")
onComplete(false, null, null)
}
} else {
Log.e("RegisterError", "Invalidステータス: ${json.optString("status", "null")}")
onComplete(false, null, null)
}
},
Response.ErrorListener { error ->
Log.e("RegisterError", "Volleyエラー: ${error.message}")
onComplete(false, null, null)
}
) {
override fun getParams(): MutableMap<String, String>{
return params
}
}
Volley.newRequestQueue(this).add(request)
}
}
解説1
prefs.saveUserId(userId!!)
「!!」はuserIdがnullでないと仮定し、強制的にコードを実行します
もしnullだった場合、アプリがクラッシュします
BACK