我如何 post radiogroup value(radiobutton text) 使用改造?

how do i post radiogroup value(radiobutton text) using retrofit?

我正在尝试 post radiogroup 值(radiobutton 文本)通过 post 请求使用改造....但它不起作用...下面我尝试了该方法

我的布局,其中单选组是:-

<RadioGroup
    android:id="@+id/radioGrp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_below="@id/confregpass"
    android:layout_marginTop="20dp"
    android:layout_toRightOf="@id/gendertext"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"

    >
    <RadioButton
        android:id="@+id/radioM"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:textColor="#ffffff"
        android:checked="true"
        android:layout_weight="0.5"
        android:textSize="14dp"
        android:text="M"

      android:buttonTint="#ffffff"
        />
    <RadioButton
        android:id="@+id/radioF"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:checked="false"
        android:textColor="#ffffff"
        android:layout_weight="0.5"
        android:textSize="14dp"
        android:text="F"
        android:buttonTint="#ffffff"

        />
</RadioGroup>

这里是radiogroup的方法:-请帮帮我

      var gender = (findViewById<View>(R.id.radioGrp) as RadioGroup).clearCheck().toString()
      radioGrp.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { group, checkedId ->
          if (checkedId != -1) {
               gender = (findViewById<View>(checkedId) as RadioButton).text.toString()
          } else {
               gender = ""
          }
      })

这是我的改造方法:-你会看到我在哪里使用性别-->

      RetrofitClient.instance.createUser(first_name, last_name, email, password, confirm_password,gender ,phone_no)
            .enqueue(object: Callback<DefaultResponse>{
                override fun onFailure(call: Call<DefaultResponse>, t: Throwable) {
                    Toast.makeText(applicationContext, t.message, Toast.LENGTH_LONG).show()
                }

                override fun onResponse(call: Call<DefaultResponse>, response: Response<DefaultResponse>) {

                    var res = response
                    if (response.isSuccessful() && response.body() != null) {
                        SharedPrefManager.getInstance(applicationContext)
                 .saveUser(response.body()?.data!!)

                      val intent = Intent(applicationContext, HomeActivity::class.java)
                        intent.flags =
                          Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK

                        Toast.makeText(
                            applicationContext,
                            res.body()?.message,
                            Toast.LENGTH_LONG
                        ).show()

                        Log.d("kjsfgxhufb",response.body()?.status.toString())
                        startActivity(intent)
                        finish()
                    }
                    else{
                        Toast.makeText(
                            applicationContext, (response.body().toString())
                            ,
                            Toast.LENGTH_LONG
                        ).show()

                        Log.d("edgerg", "" +  res.body()?.message)
                        Log.d("edgerg", "" +  response.message())


                    }
                }
            })

以下是我在 posting/registering

之后进入 postman 的输出
   ......
  "profile_pic": null,
    "country_id": null,
    "gender": "kotlin.Unit",
    "phone_no": "1234567890",
    .......

什么kotlin.Unit????

我认为我在获取单选按钮文本值时做错了请帮助我...

您现在遇到的问题肯定是它采用默认值,在本例中为 Kotlin.Unit,如果您手动选择女性,它可能对您有用。

我认为最正确的方法是在调用 createUser 函数时选择单选按钮,而不是每次触摸项目时都选择侦听器。

 val selectedId: Int = radioGrp.checkedRadioButtonId
    var gender = if (selectedId != -1) {
        val selectedRadioButton =
            findViewById<RadioButton>(selectedId)
        selectedRadioButton.text.toString()
    } else {
        ""
    }