1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como implementar os Buttons Next e Previous, o CountDownTimer, Random e o gabarito das questões respondidas.

Bom dia! Sou novato em programação e atualmente estou desenvolvendo um Quiz de 100 questões (perguntas e respostas) no Android Studio. atualmente para esse projeto, estou utilizando uma unica Activity para exibir as perguntas, sendo que será exibida uma por vez, utilizo também uma Activity de resposta , e uma classe java para armazenar as questões em memória contendo variáveis para as alternativas e resposta certa. Não utilizei o banco de dados porque é um tanto complexo, já que sou iniciante.

O fluxo que pretendo ter é assim: Ao iniciar o Quiz, 20 perguntas aleatórias e que não se repitam a cada rodada irão ser geradas com um tempo de 30 minutos para o candidato responder, a cada questão respondida o mesmo aplicará o Button Next indo para próxima pergunta,e no caso se o candidato quiser reparar uma questão anterior aplicará Previous. Na ultima questão, ao aplicar o Button Next irá aparecer um alerta de encerramento, o candidato aceitando será direcionado para a tela de respostas, onde poderá obter o numero de acertos e o gabarito das questões respondidas.

O fluxo atualmente é este: Ao iniciar o Quiz, o candidato escolhe a alternativa e aplica o Button Responder, ele é direcionado a tela de resposta e através da imagem o mesmo observa se acertou ou errou aquela questão.Logo a tela resposta contém uma Thread que em um determinado tempo derruba a mesma e volta para a tela de perguntas com outra pergunta nova. Na ultima questão respondida pelo candidato, o mesmo é direcionado para a tela de resposta em definitivo e observa se foi aprovado ou não através da imagem. Só queria que o candidato soubesse do resultado no final do questionário.

Desta forma, falta-me implementar os Buttons Next e Previous, o CountDownTimer, Random e o gabarito das questões respondidas da rodada. Segui abaixo o projeto:

Activity das Perguntas;

public class AerAltaVelActivity extends AppCompatActivity { TextView pergunta; RadioButton rbResposta1, rbResposta2, rbResposta3, rbResposta4; RadioGroup rgRespostas; int respostaCerta = R.id.rbResposta1; int pontos; Button butNext;

List questoes = new ArrayList() { { add(new QuestaoAltaVel("Qual a moeda utilizada no Brasil?", R.id.rbResposta1, "Real", "Euro", "Dolar", "Cruzeiro")); add(new QuestaoAltaVel("Qual o melhor jogador do Brasil?", R.id.rbResposta2, "Garrincha", "Pelé", "Bebeto", "Romário")); add(new QuestaoAltaVel("Qual a cor do cavalo branco de Napoleão?", R.id.rbResposta3, "Preto", "Marron", "Branco", "Pintado")); add(new QuestaoAltaVel("Qual é a capital da Bahia?", R.id.rbResposta4, "São Paulo", "Rio de Janeiro", "Curitiba", "Salvador <<<")); } };

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

pergunta = (TextView) findViewById(R.id.pergunta); rbResposta1 = (RadioButton) findViewById(R.id.rbResposta1); rbResposta2 = (RadioButton) findViewById(R.id.rbResposta2); rbResposta3 = (RadioButton) findViewById(R.id.rbResposta3); rbResposta4 = (RadioButton) findViewById(R.id.rbResposta4); rgRespostas = (RadioGroup)findViewById(R.id.rgRespostas); butNext = (Button)findViewById(R.id.btnResponder); carregarQuestao(); }

private void carregarQuestao() {

if(questoes.size() > 0) { QuestaoAltaVel q = questoes.remove(0); pergunta.setText(q.getPergunta()); List resposta = q.getRespostas(); rbResposta1.setText(resposta.get(0)); rbResposta2.setText(resposta.get(1)); rbResposta3.setText(resposta.get(2)); rbResposta4.setText(resposta.get(3)); respostaCerta = q.getRespostaCerta(); rgRespostas.setSelected(false); } else { //acabaram as questões Intent intent = new Intent(this, RespostaAerAltaVelActivity.class); intent.putExtra("pontos", pontos); startActivity(intent); finish(); } } @Override protected void onRestart(){ super.onRestart(); carregarQuestao(); }

public void btnResponderOnClick(View view) { RadioGroup rgRespostas = (RadioGroup)findViewById(R.id.rgRespostas); RadioButton rb = (RadioButton)findViewById(rgRespostas.getCheckedRadioButtonId()); Intent intent = new Intent(this, RespostaAerAltaVelActivity.class); if(rgRespostas.getCheckedRadioButtonId() == respostaCerta) { intent.putExtra("acertou", true); pontos++; } else intent.putExtra("acertou", false); intent.putExtra("pontos", pontos); startActivity(intent); rb.setChecked(false);

} }

Activity das Respostas;

public class RespostaAerAltaVelActivity extends AppCompatActivity {

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

ImageView imgResposta = (ImageView) findViewById(R.id.imgResposta); TextView resposta = (TextView) findViewById(R.id.resposta);

Intent intent = getIntent(); int pontos = intent.getIntExtra("pontos", 0); if (intent.hasExtra("acertou")) { boolean acertou = intent.getBooleanExtra("acertou", false); if (acertou) { imgResposta.setImageResource(R.mipmap.ic_launcheracertou); resposta.setText("Acertou! Pontos: " + pontos); } else { imgResposta.setImageResource(R.mipmap.ic_launchererrou); resposta.setText("Errou! Pontos: " + pontos); }

Thread thread = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } finish();

} }); thread.start(); } else { resposta.setText("fez" + pontos + "pontos!"); if (pontos >= 3) imgResposta.setImageResource(R.mipmap.ic_launcheracertou); else imgResposta.setImageResource(R.mipmap.ic_launchererrou); }

}

public void btnNovoSimuladoOnclick(View view) { Intent intent = new Intent(this, MateriaActivity.class); startActivity(intent); finish(); } }

Classe Java;

public class QuestaoAltaVel { private String pergunta; private List respostas = new ArrayList<>(); private int respostaCerta;

public QuestaoAltaVel(String pergunta, int respostaCerta, String... respostas){ this.pergunta = pergunta; this.respostas.add(respostas[0]); this.respostas.add(respostas[1]); this.respostas.add(respostas[2]); this.respostas.add(respostas[3]); this.respostaCerta = respostaCerta; } public String getPergunta(){ return this.pergunta; } public List getRespostas(){ return this.respostas; } public int getRespostaCerta(){ return this.respostaCerta; } }

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags android java ou faça a sua própria pergunta.