[英]Adding number values to answers in quizz and displaying a view that equals the sum of answers
我正在做一個測驗,其中有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;
}}
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點。
那不是解決問題的好方法。 在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。
此頁面上很好地說明了添加片段,將數據饋入其中以及從中取出數據的所有方法。 在線搜索特定的實現示例,以縫合可運行的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.