شرح التعامل مع RadioButton لاستخدامها داخل التطبيق في لغة kotlin
اولاً سوف يتم اضافة RadioButton للواجهة لدينا لكن يجب اضافتهم داخل RadioGroup لتحديد خيار واحد فقط ولا يمك تحديد خيار اخر
مثلاً اذا اردنا من المستخدم اختيار الجنس “ذكر او انثى” لا يمكنه اختيار الاثنين معاً يجب اختيار واحد فقط لذالك نضعهم داخل RadioGroup
وايضاً نريد اضافة button لجلب لمعرفة ما اختاره المستخدم
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.kotdroid.testkotlin.MainActivity"> <RadioGroup android:id="@+id/gender" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="30dp"> <RadioButton android:id="@+id/male" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Male" /> <RadioButton android:id="@+id/female" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Female" /> </RadioGroup> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Click"/> </LinearLayout> |
الان الذي نريده لتعامل مع العناصر من داخل الكلاس فقط ال id للعنصر لنتمكن في التحكم به ومعرفة الذي اختاره المستخدم
لن نقوم بأستخدام
1 |
findViewById |
سوف نتعامل مع الـ ID بشكل مباشر
اول شيئ نقوم باستخدام RadioGroup وعن طريقه نستطيع معرفة اختبار المستخدم
سوف نستخدم دالة
1 |
checkedRadioButtonId |
لمعرفة العنصر الذي ختاره المستخدم من RadioButton عن طريقة معرفة الid
1 |
val id = gender.checkedRadioButtonId |
هنى قمنا بجلب id العنصر الذي تم اختياره وبعده نقوم بعملية فحص للمغير id لمعرفة العنصر الذي تم اختياره
سوف نقوم استخدام when
1 2 3 |
when (id) { } |
وعن طريقها نستطيع معرفة العنصر الذي ختاره المستخدم ليصبح الكود التالي
1 2 3 4 |
when (id) { R.id.male -> showToast("male selected") R.id.female -> showToast("female selected") } |
سوف نظهر رسالة باسم العنصر الذي تم اختياره عن طريق toast وقد قمت بانشاء function لاستدعائها بدل من كتابة toast عدة مرات داخل الكود
1 2 3 |
fun showToast(message: String) { Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() } |
لكن حالياً لدينا خطأ اذا المستخدم لم يقم باختيار شيئ ! سوف نقوم باظهار رسالة اذا لم يتم اختيار شيئ هنالك عدد من الطرق التي ممكن استخدامها لمعرفة اذا تم اختيار عنصر ام لم يتم اختيار شيئ
1 2 3 |
if (gender.checkedRadioButtonId == -1) { showToast("Nothing select..!") } |
هذه احد الطرق الممكنة ولكن بما اني استخدم when سوف اقوم باظهار رسالة داخلها اذا لم يكن لاختيار لاحد العناصر
1 2 3 4 5 6 7 |
when (id) { R.id.male -> showToast("male selected") R.id.female -> showToast("female selected") else -> { showToast("Nothing select..!") } } |
اذا كان ال id male سوف يظهر اول رسالة اما اذا كان female سوف يظهر الرسالة الثانية ولكن اذا لم يكن احداهم سوف يظهر رسالة انه لم يتم اختيار شيئ
ليصبح كود الكلاس كاملاً
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) btn.setOnClickListener(View.OnClickListener { val id = gender.checkedRadioButtonId when (id) { R.id.male -> showToast("male selected") R.id.female -> showToast("female selected") else -> { showToast("Nothing select..!") } } }) } fun showToast(message: String) { Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() } } |