- 设计思路
- 首先问卷调查需要两个页面,一个是用户进行问题选项选择的问卷界面,一个是用户问卷调查结果的反馈页面。
- 问卷界面有题目,单选,有多选,还有文本编辑框,以及两个按钮,一个提交,一个返回。因为有多道题,所以我采取了滚动下拉布局,方便用户的操作。
- 反馈界面很简单,不需要太多的布局与控件,只要能读取返回值就行,我运用了Bundle类和Intent类
- 通过Activity直接实现接口对按钮点击动作的响应。重写onCreate()和onCheckedChanged()和onCheckedChanged()以及onClick()进行事件的监听
- 通过Activity实现结果的传输与反馈到界面上。用Bundle进行数据的传输,Intent进行页面的跳转。
- 布局控件
- 利用ScrollView布局实现滚动下拉功能
- 利用线性布局以及相对布局使布局清晰整齐
- <TextView>编写题目内容和要求
- <RadioGroup>和<RadioButton>实现单选功能
- <CheckBox>实现多选功能
- <EditText>实现文本编辑功能。
- 调试过程
- 一开始测试的时候,点击提交按钮,页面并没有发生跳转,后来发现是我忘了在AndroidManifest.xml文件中进行第二个页面的配置了,修改后,成功跳转页面。代码如下:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ResultActivity">
<intent-filter>
<action android:name="android.intent.action.Result" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
代码如下:
- 在测试过程中发现多选按钮事件的监听有点问题,重复点击的话会出现多个结果,比如点两次A三次B,反馈结果则显示为A.***A.***A.***B.***B.***B.***,造成了结果的重复,而且第一次选上了,后面取消结果中还是保留。这是因为我用的是列表存放多选结果,监听时列表没有查重,且去除未选的。我进行了多选按钮监听代码的修改。创了两个变量,一个存放点击按钮的次数,一个存放按钮是否选中的结果。如果次数为偶数,且列表中存在那个选项,则从列表中移除。如果列表中没有且次数为奇数,则把选项加入列表。
switch (checkboxId){
case R.id.cb_side1:
cs11++;
for(int i=0;i<sides.size();i++)
{
if(sides.get(i)==cb_side1.getText().toString()) {
cs1++;
}
if(cs11%2==0&&sides.get(i)==cb_side1.getText().toString())
{
sides.remove(i);
cs1=0;
}
}
if(cs1==0&&cs11%2!=0) {
cs1++;
sides.add(cb_side1.getText().toString());
}
break;
- 运行结果
图1-4 运行测试结果图b
图1-5 运行测试结果图c
图1-6运行结果反馈图
图1-7必填选项未选结果图