我正在进行一个测验,每个问题有4个问题和2个答案。我在同一个布局中使用了几个视图,所以我没有为每个问题创建一个活动。 用户将看到一个带有问题和2个可能答案的屏幕,而不是他应该选择一个并单击下一个以转到下一个问题。 如何为用户选择的每个按钮注册一个数字值,最后,当单击结果按钮时,计算这些值的总和并显示一个视图(来自多个16),这个数字等于答案的总和?
package com.example.quizapp;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ScrollView;
public class GotoStart extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_goto_start);
//Buttons for start screen
ImageButton clicks =(ImageButton)findViewById(R.id.clicks);
ImageButton new_test_btn =(ImageButton)findViewById(R.id.new_test_btn);
ImageButton view_profile_btn =(ImageButton)findViewById(R.id.view_profile_btn);
ImageButton home_btn =(ImageButton)findViewById(R.id.home_btn);
ImageButton info_btn =(ImageButton)findViewById(R.id.info_btn);
//Buttons for question_1
Button a1_btn =(Button)findViewById(R.id.a1_btn);
Button b1_btn =(Button)findViewById(R.id.b1_btn);
Button next_btn1 =(Button)findViewById(R.id.next_btn1);
//Buttons for question_2
Button a2_btn =(Button)findViewById(R.id.a2_btn);
Button b2_btn =(Button)findViewById(R.id.b2_btn);
Button next_btn2 =(Button)findViewById(R.id.next_btn2);
Button back_btn1 =(Button)findViewById(R.id.back_btn1);
//Buttons for question_3
Button a3_btn =(Button)findViewById(R.id.a3_btn);
Button b3_btn =(Button)findViewById(R.id.b3_btn);
Button next_btn3 =(Button)findViewById(R.id.next_btn3);
Button back_btn2 =(Button)findViewById(R.id.back_btn2);
//Buttons for question_4
Button a4_btn =(Button)findViewById(R.id.a3_btn);
Button b4_btn =(Button)findViewById(R.id.b3_btn);
Button result_btn =(Button)findViewById(R.id.result_btn);
Button back_btn3 =(Button)findViewById(R.id.back_btn3);
//Click on screen to start
clicks.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View startpage = (View)findViewById(R.id.startpage);
View homepage = (View)findViewById(R.id.homepage);
homepage.setVisibility(View.GONE);
startpage.setVisibility(View.VISIBLE);};});
//Click for question_1
new_test_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View startpage = (View)findViewById(R.id.startpage);
View question_1 = (View)findViewById(R.id.question_1);
startpage.setVisibility(View.GONE);
question_1.setVisibility(View.VISIBLE);};});
//Click for question_2
next_btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View question_1 = (View)findViewById(R.id.question_1);
View question_2 = (View)findViewById(R.id.question_2);
question_1.setVisibility(View.GONE);
question_2.setVisibility(View.VISIBLE);};});
//Go back to question_1
back_btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View question_2 = (View)findViewById(R.id.question_2);
View question_1 = (View)findViewById(R.id.question_1);
question_2.setVisibility(View.GONE);
question_1.setVisibility(View.VISIBLE);};});
//Click for question_3
next_btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View question_2 = (View)findViewById(R.id.question_2);
View question_3 = (View)findViewById(R.id.question_3);
question_2.setVisibility(View.GONE);
question_3.setVisibility(View.VISIBLE);};});
//Go back to question_2
back_btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View question_3 = (View)findViewById(R.id.question_3);
View question_2 = (View)findViewById(R.id.question_2);
question_3.setVisibility(View.GONE);
question_2.setVisibility(View.VISIBLE);};});
//Click for question_4
next_btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View question_3 = (View)findViewById(R.id.question_3);
View question_4 = (View)findViewById(R.id.question_4);
question_3.setVisibility(View.GONE);
question_4.setVisibility(View.VISIBLE);};});
//Go back to question_3
back_btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View question_4 = (View)findViewById(R.id.question_4);
View question_3 = (View)findViewById(R.id.question_3);
question_4.setVisibility(View.GONE);
question_3.setVisibility(View.VISIBLE);};});
//Click for info screen
info_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View startpage = (View)findViewById(R.id.startpage);
ScrollView frameinfo = (ScrollView)findViewById(R.id.frameinfo);
View answers = (View)findViewById(R.id.answers);
startpage.setVisibility(View.GONE);
frameinfo.setVisibility(View.VISIBLE);
answers.setVisibility(View.VISIBLE);};});
//Click for home
home_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View startpage = (View)findViewById(R.id.startpage);
View homepage = (View)findViewById(R.id.homepage);
startpage.setVisibility(View.GONE);
homepage.setVisibility(View.VISIBLE);};});
//Click for home
view_profile_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View startpage = (View)findViewById(R.id.startpage);
View answers = (View)findViewById(R.id.answers);
startpage.setVisibility(View.GONE);
answers.setVisibility(View.VISIBLE);};});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.goto_start, menu);
return true;
}}
答案 0 :(得分:0)
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class AndroidApp extends JFrame implements ActionListener {
private AnswerButton questionOneButtonA;
private int totalScore;
private JButton finishButton;
private JLabel totalScoreLabel;
public AndroidApp(){
setSize(500,500);
setLayout(null);
questionOneButtonA = new AnswerButton("Choice 1",10);
questionOneButtonA.setActionCommand("questionOneChoice1");
questionOneButtonA.setBounds(50,50,100,20);
questionOneButtonA.addActionListener(this);
add(questionOneButtonA);
finishButton = new JButton("Done");
finishButton.setBounds(50,100,100,20);
finishButton.setActionCommand("done");
finishButton.addActionListener(this);
add(finishButton);
totalScoreLabel = new JLabel("0");
totalScoreLabel.setBounds(200,200,100,50);
add(totalScoreLabel);
setVisible(true);
}
public void actionPerformed(ActionEvent ae){
if(ae.getActionCommand().equals("questionOneChoice1")){
totalScore+=questionOneButtonA.getPointValue();
}
else if(ae.getActionCommand().equals("done")){
totalScoreLabel.setText(""+totalScore);
}
}
public static void main(String[]args){
AndroidApp test = new AndroidApp();
}
class AnswerButton extends JButton{
private int pointValue;
public AnswerButton(String buttonName, int p){
super(buttonName);
pointValue = p;
}
public int getPointValue(){
return pointValue;
}
}
}
只需给出正确的答案按钮一定数量的分数,并给出错误答案0分。
答案 1 :(得分:0)
这不是解决问题的好方法。在android上使用Fragment
api。如果您还没有学习,请阅读adapters
。
基本上,您可以为每个问题创建一个片段分页器,为按钮单击声明接口并更新活动中的字段。
编辑
我将尝试在高级别概述流程,复制粘贴无法正常工作。
创建一个适配器,为每个问题提供一个新的片段实例。
class QuestionsAdapter extends FragmentPagerAdapter {
@Override
public Fragment getItem(int position) {
//Here you create a new instance of the fragment for each of your page
Fragment f = new QuestionsFragment.newInstance(int position);
return f;
}
}
然后创建一个QuestionsFragment
片段
覆盖onCreateView()
并提供您要在每个问题屏幕上使用的布局。
要在您的活动中添加可交换的寻呼机,请使用ViewPager
ViewGroup。
在this页面上很好地解释了添加片段,向其中提供数据并从中获取数据。在线搜索特定的实现示例以缝合工作应用程序。