gpt4 book ai didi

java - 使用单选按钮创建测试/问卷 - Android

转载 作者:行者123 更新时间:2023-11-30 03:05:39 26 4
gpt4 key购买 nike

我正在制作一个包含抑郁症测试的 Android 应用程序。测试包括 9 个问题,每个问题有 4 个可能的答案。答案以单选按钮的形式出现。我需要按如下方式为单选按钮分配数值:

答案 1 = 0 答案 2 = 1 答案 3 = 2 答案 4 = 3

在测试结束时,用户将收到一个结果,1-10 代表可能没有抑郁,10-27 代表可能抑郁。

每个问题都在单独的页面上提出,结果页面将包含结果,即添加的每个答案的总和。

有人可以就我应该如何解决这个问题提出建议吗?

res/values/strings.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<integer name="int1">0</integer>
<integer name="int2">1</integer>
<integer name="int3">2</integer>
<integer name="int4">3</integer>

</resources>

“Test1”xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:background="@color/white"
tools:context=".Test1">

<!-- title text -->
<TextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="37dp"
android:text="@string/D1title"
android:textAppearance="?android:attr/textAppearanceLarge" />

<!-- subtitle text -->
<TextView
android:id="@+id/txtSubTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtTitle"
android:layout_centerHorizontal="true"
android:text="@string/Q1Subtitle"
android:textAppearance="?android:attr/textAppearanceMedium" />

<!-- question 1 text -->
<TextView
android:id="@+id/txtQ1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/txtSubTitle"
android:layout_marginTop="38dp"
android:text="@string/Q1"
android:textAppearance="?android:attr/textAppearanceLarge" />

<!-- radio group to allow for only one radio button selection -->
<RadioGroup
android:id="@+id/radioAnswers1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtQ1" >

<!-- 1st answer radio button-->
<RadioButton
android:id="@+id/radioA1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:checked="false"
android:text="@string/zero"
android:tag="@integer/int1" />

<!-- 2nd answer radio button-->
<RadioButton
android:id="@+id/radioA2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/one"
android:tag="@integer/int2" />

<!-- 3rd answer radio button-->
<RadioButton
android:id="@+id/radioA3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/two"
android:tag="@integer/int3" />

<!-- 4th answer radio button-->
<RadioButton
android:id="@+id/radioA4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/three"
android:tag="@integer/int4" />

</RadioGroup>

<!-- next button -->
<Button
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/txtTitle"
android:text="@string/next" />

</RelativeLayout>

“Test1”java代码:

package com.lifematters;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;

public class Test1 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test1);

//define Navigation Image Buttons
final Button nextBtn = (Button) findViewById(R.id.btnNext);

final RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioAnswers1);
final RadioButton checkedButton = ((RadioButton)findViewById(radioGroup.getCheckedRadioButtonId()));

static int result;




radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged (RadioGroup group, int checkedId){

final RadioButton radioButton1 = (RadioButton) findViewById(R.id.radioA1);
final RadioButton radioButton2 = (RadioButton) findViewById(R.id.radioA2);
final RadioButton radioButton3 = (RadioButton) findViewById(R.id.radioA3);

if (radioButton1.isChecked()) {
displayToast("No, not at all");

} else if (radioButton2.isChecked()) {
displayToast("On some days");

}else if (radioButton3.isChecked()) {
displayToast("On more than half the days");

}else {
displayToast("Nearly everyday");
}
}

});


//Set up listener for Test
nextBtn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//listener call this function

checkedButton.getTag();

Intent intent = new Intent(getBaseContext(), Test2.class);
intent.putExtra("EXTRA_RESULT", result);
startActivity(intent);

openTest2();
}
});


}

//Open test page
public void openTest2() {
//create new textview
Intent i = new Intent(getApplicationContext(), Test2.class);
startActivity(i);
}


public void displayToast(String text){
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}

}

“结果 1”XML 代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white" >

<!-- Creating Results Title -->
<TextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="19dp"
android:text="@string/resultsTitle"
android:textAppearance="?android:attr/textAppearanceLarge" />

<!-- Creating Results Subtitle -->
<TextView
android:id="@+id/txtSubtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtTitle"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:text="@string/subtitleR1" />


<!-- Creating Score Label -->
<TextView
android:id="@+id/txtScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/txtResults"
android:layout_centerHorizontal="true"
android:layout_marginBottom="29dp"
android:text="@string/score1"
android:textAppearance="?android:attr/textAppearanceLarge" />

<!-- Creating Results Text -->
<TextView
android:id="@+id/txtResults"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/btnNext"
android:layout_alignParentLeft="true"
android:text="@string/results1"
android:textAppearance="?android:attr/textAppearanceMedium" />

<!-- Creating Next Button -->
<Button
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="14dp"
android:text="@string/next" />

</RelativeLayout>

“Results1”java代码:

package com.lifematters;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.app.Activity;
import android.content.Intent;

public class Results1 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.results1);

final Button nextBtn = (Button) findViewById(R.id.btnNext);
final TextView score = (TextView) findViewById(R.id.txtScore);

int result;

result = getText(Test1.result1);


//Set up listener for Next
nextBtn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//listener call this function
open101();
}
});


}

//Open test page
public void open101() {
//create new textview
Intent i = new Intent(getApplicationContext(), Depression101.class);
startActivity(i);
}
}

最佳答案

无需检查每个单选按钮以查看哪个被选中,您可以从已检查的 ID 中获取唯一已检查的单选按钮。

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioAnswers1);
RadioButton checkedButton = ((RadioButton)findViewById(radioGroup.getCheckedRadioButtonId() ))

那么你就不需要那个checked change listener了,你可以在点击nextBtn时获取值。当然,您可能仍希望已检查的更改监听器查看是否选择了一个或显示 toast...但这不是重点。

第 2 部分,如何将该单选按钮转换为数值。真的,有很多方法可以做到这一点。我认为我的首选方法是枚举,但您可以使用任意数量的方法将字符串映射到 int,将单选按钮 id 映射到 int 等。您甚至可以使用标签。看起来您在标签周围有一些注释代码。我只是在 xml 中设置标签,然后在您准备好进入下一页时使用 checkedButton.getTag() 获取值。很简单。

我肯定会建议通过 intent extras 将结果传递给下一个 Activity。每一个新的测试页面都可以将当前页面的结果添加到上一页并将新值传递给它,然后当您到达结果页面时,总结果分数已经计算出来了。如果用户开始单击后退按钮更改答案,它会很好地扩展。

关于java - 使用单选按钮创建测试/问卷 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21861946/

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