我为测验应用程序编写了XML。
会有(10)个问题,一些RadioGroup和一些CheckBox,但问题的类型不会是任何顺序。所以第一个是无线电组,第二个复选框,第3,第4和第5个无线电组,第6个和第7个复选框等。
RadioGroup显然只有一个正确的答案,而CheckBox有两到三个正确的答案。
我想创建一个“CHECK QUIZ”按钮,在滚动测验的顶部显示一条消息,使数字正确,并在每个错误答案的前面显示一个红色的大红色“X”。 / p>
我不确定在MainActivity java文件中从哪里开始使用Java代码。
MainActivity.java
package com.example.android.quiztest;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;
import android.widget.EditText;
import android.widget.TextView;
/**
* package com.example.android.quiztest;
* This app displays a radio button and checkbox quiz, and then grades the quiz, * displaying the score and identifying the incorrect answers.
**/
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(com.example.android.quiztest.R.layout.activity_main);
}
}
activity_main.xml中
<ScrollView 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"
tools:context="com.example.android.quiztest.MainActivity"
android:fillViewport="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dimension_1"
android:orientation="vertical">
<EditText
android:id="@+id/name_text_view_STUDENT"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/text_person_name"
android:inputType="textPersonName" />
<TextView
android:id="@+id/label_text_view_DIRECTIONS"
style="@style/HeaderTextStyle"
android:textSize="20sp"
android:layout_marginTop="@dimen/dimension_1"
android:text="@string/text_directions" />
<TextView
android:id="@+id/label_text_view_1"
style="@style/HeaderTextStyle"
android:layout_marginTop="@dimen/dimension_1"
android:text="@string/text_1" />
<RadioGroup
android:id="@+id/radioGroup_1"
style="@style/HeaderTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/radioButton_1a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimension_1"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:text="@string/text_1a"
android:textSize="@dimen/text_size_1" />
<RadioButton
android:id="@+id/radioButton_1b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimension_1"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:text="@string/text_1b"
android:textSize="@dimen/text_size_1" />
<RadioButton
android:id="@+id/radioButton_1c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimension_1"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:text="@string/text_1c"
android:textSize="@dimen/text_size_1" />
</RadioGroup>
<View
android:layout_width="fill_parent"
android:layout_height="2dp"
android:layout_marginTop="25dp"
android:background="#c0c0c0" />
<TextView
android:id="@+id/label_text_view_2"
style="@style/HeaderTextStyle"
android:layout_marginTop="@dimen/dimension_1"
android:text="@string/text_2" />
<CheckBox
android:id="@+id/checkBox_2a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:text="@string/text_2a"
android:textSize="@dimen/text_size_1" />
<CheckBox
android:id="@+id/checkBox_2b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimension_1"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:text="@string/text_2b"
android:textSize="@dimen/text_size_1" />
<CheckBox
android:id="@+id/checkBox_2c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimension_1"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:text="@string/text_2c"
android:textSize="@dimen/text_size_1" />
</LinearLayout>
</ScrollView>
strings.xml
<resources>
<string name="text_button_1">check answers</string>
<string name="app_name">Quiz Test</string>
<string name="text_person_name">Type student name here.</string>
<string name="text_directions">Select ALL correct answers:</string>
<string name="text_1">1) probability distribution</string>
<string name="text_1a">1a) A smooth curve indicating the frequency distribution for a discontinuous random variable.</string>
<string name="text_1b">1b) A discontinuous dot diagram showing the frequency distribution for a random variable.</string>
<string name="text_1c">1c) A smooth curve indicating the frequency distribution for a continuous random variable.</string>
<string name="text_2">2) normal distribution</string>
<string name="text_2a">2a) A smooth double-peak bell-shaped curve symmetrical about the mean.</string>
<string name="text_2b">2b) A smooth single-peak curve </string>
<string name="text_2c">3c) A bell-shaped curve symmetrical about the mean. </string>
</resources>
答案 0 :(得分:1)
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:fillViewport="false"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dimension_1"
android:orientation="vertical">
<EditText
android:id="@+id/name_textView_STUDENT"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/text_person_name"
android:inputType="textPersonName" />
<TextView
android:id="@+id/textView_directions"
style="@style/HeaderTextStyle"
android:layout_marginTop="@dimen/dimension_1"
android:text="@string/text_directions"
android:textSize="20sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dimension_1"
android:orientation="horizontal">
<TextView
android:id="@+id/incorrect_question_1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dimension_1"
android:gravity="center"
android:text="X"
android:textColor="#ff0000"
android:textSize="30dp"
android:visibility="gone" />
<TextView
android:id="@+id/textView_1"
style="@style/HeaderTextStyle"
android:layout_marginTop="@dimen/dimension_1"
android:text="@string/text_1" />
</LinearLayout>
<RadioGroup
android:id="@+id/radioGroup_1"
style="@style/HeaderTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/radioButton_1a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimension_1"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:textSize="@dimen/text_size_1"
android:text="@string/text_1a"
android:onClick="onClick_1a"/>
<RadioButton
android:id="@+id/radioButton_1b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimension_1"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:text="@string/text_1b"
android:textSize="@dimen/text_size_1"
android:onClick="onClick_2a"/>/>
<RadioButton
android:id="@+id/radioButton_1c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimension_1"
android:paddingLeft="@dimen/dimension_4"
android:paddingRight="@dimen/dimension_5"
android:text="@string/text_1c"
android:textSize="@dimen/text_size_1"
android:onClick="onClick_3a"/>
</RadioGroup>
package com.example.android.quiztest2;
/**
* *Below added my unique package name "com.example.android.justjava4"
*/
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.TextView;
/**
* package com.example.android.justjava4;
* This app displays an order form to order coffee, and displays the information.
* quantity is a global variable
**/
public class MainActivity extends AppCompatActivity {
private RadioButton radioButton_1a, radioButton_1b, radioButton_1c, radioButton_4a, radioButton_4b, radioButton_4c,
radioButton_5a, radioButton_5b, radioButton_5c, radioButton_6a, RadioButton_6b, radioButton_6c,
radioButton_7a, radioButton_7b, radioButton_7c, radioButton_9a, radioButton_9b, radioButton_9c;
private CheckBox checkBox_2a, checkBox_2b, checkBox_2c, checkBox_3a, checkBox_3b, checkBox_3c, checkBox_8a, checkBox_8b, checkBox_8c;
int grade = 0;
public void Score(int grade) {
if (radioButton_1c.isChecked()) grade++;
if (radioButton_4c.isChecked()) grade++;
if (radioButton_5c.isChecked()) grade++;
if (radioButton_6c.isChecked()) grade++;
if (radioButton_7c.isChecked()) grade++;
if (radioButton_9c.isChecked()) grade++;
if (checkBox_2a.isChecked() && !checkBox_2b.isChecked() && checkBox_2c.isChecked()) grade++;
if (checkBox_3a.isChecked() && checkBox_3b.isChecked() && checkBox_3c.isChecked()) grade++;
if (checkBox_8a.isChecked() && !checkBox_8b.isChecked() && checkBox_8c.isChecked()) grade++;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(com.example.android.quiztest2.R.layout.activity_main);
final Context currentContext = this;
Button button_grade_quiz = (Button)
findViewById(R.id.button_grade_quiz);
button_grade_quiz.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean answerCorrect1 = false;
TextView incorrectQuestionOne = (TextView) findViewById(R.id.incorrect_question_1);
if (!answerCorrect1) {
incorrectQuestionOne.setVisibility(View.VISIBLE);
} else {
incorrectQuestionOne.setVisibility(View.GONE);
}
}
});
}
}
不确定如何将评分功能连接到其他java方法。
答案 1 :(得分:0)
简单答案:在xml中添加一个按钮,并为其指定一个id。例如,xml很可能看起来像这样:
<Button
android:id="@+id/quiz_complete_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Finish Quiz"
android:textSize="@dimen/text_size_1"
android:layout_gravity="center"/>
然后,在您的MainActivity AFTER setContentView被调用之后,您将通过其id找到您的按钮视图,并为其设置onClickListener。下面的示例代码包含一个粗略的测试,当单击该按钮时将显示Toast消息,以便您可以看到该按钮正确连接到侦听器。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Context currentContext = this;
Button quizAnsweredButton = (Button) findViewById(R.id.quiz_complete_button);
quizAnsweredButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
Toast.makeText(currentContext, "TESTING", Toast.LENGTH_LONG).show();
}
});
}
(注意 - 澄清一下,上面的粗体表示只有在显示视图时才能引用视图 - 这是上面的setContentView所做的。如果你尝试在setContentView之前调用findViewById,你将收到崩溃。 )
这是更复杂的地方。 在没有编写整个解决方案的情况下,为了实现您的目标,我要做的是添加您希望测验的全部内容,如果用户在xml中提交所有答案错误的测验。我已经为问题1创建了xml。(为了保留你的xml的其余部分,我添加了一个水平的LinearLayout,但是为了你的视图的复杂性,我建议使用RelativeLayout) 如您所见,错误标签的可见性设置为&#34;已消失&#34;。这意味着将不会看到视图,但也不会占用父视图的空间。 &#34不可见#34;会隐藏视图,但它的空间仍然会被填满。
现在,当提交测试时,我们将显示错误的答案标签。当然,在您的完整解决方案中,您将评估答案是否正确。
问题一标签的XML:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/question_1_incorrect_label"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="@color/red"
android:gravity="center"
android:visibility="gone"/>
<TextView
android:id="@+id/label_text_view_1"
style="@style/HeaderTextStyle"
android:layout_marginTop="@dimen/dimension_1"
android:text="@string/text_1" />
</LinearLayout>
更新了MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Context currentContext = this;
Button quizAnsweredButton = (Button) findViewById(R.id.quiz_complete_button);
quizAnsweredButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean answer1Correct = false;
//TODO: Evaluate the actual value of answer1Correct boolean.
TextView questionOneIncorrectLabel = (TextView)findViewById(R.id.question_1_incorrect_label);
if (!answer1Correct) {
questionOneIncorrectLabel.setVisibility(View.VISIBLE);
}
else {
questionOneIncorrectLabel.setVisibility(View.GONE);
}
}
});
}
注意 - 在colors.xml中,添加:
<color name="red">#FF0000</color
其余的应该只是一些工作,以及MainActivity中的代码,以分析每个答案是否正确。
最后,提示简化您的正确答案消息。您可以使用占位符创建字符串常量,以便稍后添加值。例如:
<string name="text_quiz_complete_answers">You answered %d question(s) correctly.</string>
从strings.xml文件中提取此字符串值时,您可以像这样引用它:
String.format(getString(R.string.text_quiz_complete_answers), 5)
5只是占位符。相反,应该有你计算的数值。
有关格式化这样的字符串的更多信息,我会参考这篇文章:Are parameters in strings.xml possible?