【问题标题】:Android Material Button Toggle GroupAndroid 材质按钮切换组
【发布时间】:2020-06-12 14:28:03
【问题描述】:

我正在 android 中创建一个要求性别的表单。要获得此输入,我使用包含两个按钮的 Material Button Toggle Group。我不知道如何知道在我的activity.java 中单击了哪个按钮。如何了解我的活动中选定的按钮,以便我可以将详细信息保存在不同的数据库中。

myxml.xml

    <com.google.android.material.button.MaterialButtonToggleGroup
                android:id="@+id/toggleButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:singleSelection="true">
                <Button
                    android:id="@+id/button1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Male"
                    android:layout_marginStart="5dp"
                    style="?attr/materialButtonOutlinedStyle"/>
                <Button
                    android:id="@+id/button2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Female"
                    android:layout_marginStart="10dp"
                    style="?attr/materialButtonOutlinedStyle"/>

            </com.google.android.material.button.MaterialButtonToggleGroup>

Myactivity.java

    MaterialButtonToggleGroup toggleButton = findViewById(R.id.toggleButton);
    toggleButton.addOnButtonCheckedListener(); 
    // I CAN'T FIND ANY PROPER SOLUTION

【问题讨论】:

    标签: java android android-layout android-button material-components-android


    【解决方案1】:

    您可以使用 getCheckedButtonId() 方法。
    比如:

    MaterialButtonToggleGroup materialButtonToggleGroup = 
             findViewById(R.id.toggleButton);
    int buttonId = materialButtonToggleGroup.getCheckedButtonId();
    MaterialButton button = materialButtonToggleGroup.findViewById(buttonId);
    

    只有当你需要一个监听器时,你才能使用addOnButtonCheckedListener

    materialButtonToggleGroup.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
          @Override
          public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
            if (isChecked) {
              if (checkedId == R.id.button1) {
                //..
              }
            }
      }
    });
    

    您必须检查checkedId 的值,还要检查isChecked 的值。当您选中一个按钮以及取消选中一个按钮时,都会调用相同的侦听器。

    这意味着如果您单击button1,则使用isChecked=truecheckedId=1 调用侦听器。然后,如果您单击button2,则会调用两次侦听器。一次使用isChecked=falsecheckedId=1,一次使用isChecked=truecheckedId=2

    【讨论】:

      【解决方案2】:

      你可以这样做:

      toggleButton.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
                  @Override
                  public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
                      if(group.getCheckedButtonId()==R.id.button1)
                      {
                          //Place code related to button1 here
                          Toast.makeText(MainActivity2.this, "Button1 Clicked", Toast.LENGTH_SHORT).show();
      
                      }else if(group.getCheckedButtonId()==R.id.button2) {
                          //Place code related to button 2 here
                          Toast.makeText(MainActivity2.this, "Button2 Clicked", Toast.LENGTH_SHORT).show();
                      }
      
                  }
              });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-27
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 2019-01-30
        相关资源
        最近更新 更多