gpt4 book ai didi

java - 安卓工作室 : Using radioButtons for a quiz

转载 作者:数据小太阳 更新时间:2023-10-29 02:34:46 28 4
gpt4 key购买 nike

所以我正在尝试制作一个应用程序,您可以在其中从 radioGroup 中的 radioButton 中选择一个答案,当您点击提交按钮时,它将更改 textbox 说“正确”或“错误答案”,这取决于选择的是哪个按钮。我能够运行应用程序并选择 radioButton,但是当我单击提交时,应用程序崩溃并显示“不幸的是,MyApp 已停止”。

这是我的代码:

XML

 <RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/question1"
android:id="@+id/q1radiobox">

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/q1a1"
android:id="@+id/q1a1" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/q1a2"
android:id="@+id/q1a2"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/q1a3"
android:id="@+id/q1a3"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/q1a4"
android:id="@+id/q1a4"/>
</RadioGroup>

<Button
android:onClick="checkResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/q1radiobox"
android:text="Submit"/>

Java

   private void checkResult() {
RadioButton rb;
rb = (RadioButton) findViewById(R.id.q1a3);

if (rb.isChecked()) {
((TextView) findViewById(R.id.answer1)).setText("@string/correct");
}
else {
((TextView) findViewById(R.id.answer1)).setText("@string/incorrect");
}
}

任何帮助将不胜感激;我不知道哪里出了问题!

编辑:我已经发布了解决方案。感谢@miselking 指出其中一个问题。

最佳答案

好的,那么您需要知道的是,当您使用 android:onClick="checkResult" 定义点击事件的方式时,您的 checkResult 方法需要将 View 作为参数,只有这样它才能响应 onClick 事件。因此,将您的方法更改为如下所示:

    private void checkResult(View v) {
RadioButton rb;
rb = (RadioButton) findViewById(R.id.q1a3);

if (rb.isChecked()) {
((TextView) findViewById(R.id.answer1)).setText("@string/correct");
}
else {
((TextView) findViewById(R.id.answer1)).setText("@string/incorrect");
}

编辑:您得到的是警告,而不是错误。您收到该警告是因为您没有在方法中的任何地方使用参数 v 。你可以忽略它,如果你有多个按钮调用同一个方法,它很有用,那么你需要知道哪个按钮实际调用了该方法。

假设您有两个按钮,其 ID 分别为 btnId1btnId2。它们在 xml 文件中都有这行代码:android:onClick="checkResult",所以它们都调用相同的方法(你可以这样做)。那么,当您单击这两个按钮中的任何一个时,哪个按钮实际调用了该方法?嗯,这就是为什么 View v 是必需的。然后,您将能够看到实际单击了哪个按钮并做出了适当的响应。 checkResult 的实现示例:

public void checkResult(View view)
{
Log.d("TAG_BTN", "Someone called me. But who???");
switch (view.getId())
{
case R.id.btnId1:
Log.d("TAG_BTN", "BtnId1 called me. Do something, please...");
break;
case R.id.btnId2:
Log.d("TAG_BTN", "BtnId2 called me. What next to do...");
break;
}
}

希望您了解为什么需要 View 参数。

关于java - 安卓工作室 : Using radioButtons for a quiz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30140081/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com