【问题标题】:Creating new RadioButtons Android创建新的 RadioButtons Android
【发布时间】:2013-01-29 00:45:51
【问题描述】:

您好,我正在尝试为 Android 创建一个应用程序,为了开发它,我需要浏览不同的页面和问题。对于这个任务,我定义了一个带有一些单选按钮的单选组。但是,当用户进入下一个或上一个问题时,这些单选按钮保持不变(它只更改文本而不更改所选答案,这始终是每个答案的所选答案)。出于这个原因,我认为我需要在转到下一个问题时创建新的 RadioButtons,但如果我转到上一个问题,则可以保存状态。

如果您能提供帮助,这是我的代码的一部分 XML:

 <RadioGroup
    android:id="@+id/respuestas3RG"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_below="@id/imagenenunciado3"
    android:orientation="vertical">

    <RadioButton
        android:id="@+id/respuesta3A"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A. RespuestaA"/>
   <RadioButton
        android:id="@+id/respuesta3B"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="B. RespuestaB"/>
   <RadioButton
        android:id="@+id/respuesta3C"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="C. RespuestaC"/>
   <RadioButton
        android:id="@+id/respuesta3D"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="D. RespuestaD"/>
   </RadioGroup>

Java:

bNext.setOnClickListener(new View.OnClickListener(){
            @Override

                public void onClick(View v) {
                posicion = posicion +1;
                questions.Next();       
                currentQuestion();



            }

我不知道最好的选择是在开始时创建所有单选按钮,还是在用户完成下一个问题时生成它们。 谢谢你

【问题讨论】:

    标签: java android radio-button


    【解决方案1】:

    您不需要重新创建它,在清除检查之前保存状态(答案) setChecked(false);

    【讨论】:

    • 感谢您的帮助 wtsang02。但是,当我回到前面的问题时,即使我已经回答了这些单选按钮,它们也不会被选中。
    • 正如我所说,在进入下一个问题之前保存它的状态。因此,如果您返回问题,则可以重新加载该状态。
    • 谢谢 wtsang,但我有点不知道如何在单选按钮中保存状态。更多帮助将不胜感激,因为我没有在任何其他页面上找到信息。
    • 获取所有单选按钮,然后循环: if(radiobutton.isChecked(){//its checked }else{//its unchecked}
    【解决方案2】:

    您应该考虑为每个页面使用不同的活动。我更喜欢单一活动的唯一原因是为了某种问题游戏。

    如果您希望它在同一个 Activity 中:

    您还可以使用LayouInflater 将相同的xml 膨胀到多个视图。每个为一个单独的页面。这样你的页面状态保持不变,因为它存储在相关的视图中,而不是在你的活动中。来回更改将是一个简单的调用

    setContentView(yourViewArray[page]);

    您可以将所有验证内容放在最后。

    但首先你应该检查你是否真的想把所有页面放到同一个 Activity 中。

    【讨论】:

    • 谢谢马克斯。目前我有不同的测试(活动),其中包含这些页面,所以我不认为只为一个测试创建即时 30 活动(30 个问题)是最好的选择
    • 如前所述作为替代方式。尝试多次扩充您的 XML。充气器将返回一个代表您的视图的视图对象。只需根据需要经常执行此操作,将所有内容放入一个数组中,然后将每个内容用于一个新页面。如果有人点击“下一个”,只需执行 setContentView(myArray[currentPage++]) 并显示数组中的下一个视图。非常方便,但不要忘记检查数组边界。
    猜你喜欢
    • 2012-08-29
    • 2012-05-12
    • 2011-10-02
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2016-09-13
    • 2011-06-23
    • 2016-09-15
    相关资源
    最近更新 更多