Criando um Quiz

Vamos criar um projeto na api 23 Android 6(Marshmallow)

Estrutura final do Projeto:

Vamos criar a primeira classe: Aluno.
Que ficará assim:

package entity;

import java.io.Serializable;

public class Aluno implements Serializable {

    private Integer codigo;
    private String  nome;
    private String  email;
    private Prova prova;

    public Aluno() {
    }

    public Aluno(Integer codigo, String nome, String email) {
        this.codigo = codigo;
        this.nome = nome;
        this.email = email;
    }

    @Override
    public String toString() {
        return "Aluno{" +
                ", nome='" + nome + '\'' +
                ", email='" + email + '\'' +
                '}';
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
					

Agora iremos criar a classe: Prova.

package entity;

import java.io.Serializable;

public class Prova implements Serializable {

    private Integer idProva;
    private String questao1;
    private String resposta1;
    private String questao2;
    private String resposta2;
    private Integer pontos=0;
    private String situacao;

    private Aluno aluno;

    public Prova() {
    }

    @Override
    public String toString() {
        return "Prova{" +
                " questao1='" + questao1 + '\'' +
                ", resposta1='" + resposta1 + '\'' +
                ", questao2='" + questao2 + '\'' +
                ", resposta2='" + resposta2 + '\'' +
                ", pontos=" + pontos +
                ", \n\nsituacao='" + situacao + '\'' +
                '}';
    }

    public Integer getIdProva() {
        return idProva;
    }

    public void setIdProva(Integer idProva) {
        this.idProva = idProva;
    }

    public String getQuestao1() {
        return questao1;
    }

    public void setQuestao1(String questao1) {
        this.questao1 = questao1;
    }

    public String getResposta1() {
        return resposta1;
    }

    public void setResposta1(String resposta1) {
        this.resposta1 = resposta1;
    }

    public String getQuestao2() {
        return questao2;
    }

    public void setQuestao2(String questao2) {
        this.questao2 = questao2;
    }

    public String getResposta2() {
        return resposta2;
    }

    public void setResposta2(String resposta2) {
        this.resposta2 = resposta2;
    }

    public Integer getPontos() {
        return pontos;
    }

    public void setPontos(Integer pontos) {
        this.pontos = pontos;
    }

    public String getSituacao() {
        return situacao;
    }

    public void setSituacao(String situacao) {
        this.situacao = situacao;
    }

    public Aluno getAluno() {
        return aluno;
    }

    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }
}
					

Agora vamos adicionar uma imagem da seguinte forma:

  • Escolha a imagem que deseja colocar no projeto.
  • Coloque ela na pasta drawable
  • E ficará da seguinte forma:

Em seguida vamos para a nossa primeira tela: "activity_main". Que fica da seguinte forma:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="coti.com.br.appprova.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Prova Certificacao Java"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="28dp"
        android:layout_gravity="center"
        android:fontFamily="serif"
        />

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/coruja2"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_margin="30dp"
        android:background="#ccc"
        android:padding="10dp"
        >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Nome"
        android:textSize="22dp"
        />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id = "@+id/txtNome"
        android:inputType="text"
        android:textSize="16dp"
        ></EditText>
      <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Email"
            android:textSize="22dp"
            />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id = "@+id/txtEmail"
            android:inputType="text"
            android:textSize="16dp"
            ></EditText>

         <Button
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:text="Inicio do Prova"
             android:textSize="22dp"
             android:onClick="proximo"
             />
    </LinearLayout>
</LinearLayout>
					

Agora iremos fazer a programação na classe : "MainActivity". Que ficará assim:

package coti.com.br.appprova;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

import java.io.Serializable;

import entity.Aluno;

public class MainActivity extends AppCompatActivity {

   EditText txtNome, txtEmail;
   Aluno aluno;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        aluno = new Aluno();
        txtNome = (EditText) findViewById(R.id.txtNome);
        txtEmail = (EditText) findViewById(R.id.txtEmail);

    }

    public void proximo(View v){
        Intent it = new Intent(getApplicationContext(),Tela2.class);
         Bundle bundle = new Bundle();
         aluno.setNome(txtNome.getText().toString());
         aluno.setEmail(txtEmail.getText().toString());
          bundle.putSerializable("objaluno", aluno);
          it.putExtras(bundle);
          startActivity(it);
    }
}
					

Agora vamos para a nossa segunda tela: Tela2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/coruja2"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_margin="30dp"
        android:background="#ccc"
        android:padding="10dp"
        >
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="1)Por que utilizamos Wrapper no Java?"
            android:id="@+id/viewquestao1"
            />
        <RadioGroup
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:id="@+id/rgOpcao1"
             >
           <RadioButton
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
      android:text="a)por ser OO, Wrapper é OO"
               android:id="@+id/rbresp1"
               />
            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
      android:text="b)o tipo primivo aceita null"
                android:id="@+id/rbresp2"
                />
            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
      android:text="c)java nao utiliza Wrapper"
                android:id="@+id/rbresp3"
                />

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="Resposta"
                android:textSize="22dp"
                android:onClick="proximot3"
                />

        </RadioGroup>

    </LinearLayout>
</LinearLayout>
					

Agora vamos programar a classe: "Tela2".

package coti.com.br.appprova;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import entity.Aluno;
import entity.Prova;

public class Tela2  extends AppCompatActivity {
    TextView view1;
    RadioGroup rgOpcao1;
    RadioButton rbresp1,rbresp2, rbresp3;
    Aluno aluno;
    Prova prova;
    int cont=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tela2);
        Intent it = getIntent();
        Bundle dados = it.getExtras();
        aluno = (Aluno) dados.getSerializable("objaluno");
        rgOpcao1 = (RadioGroup) findViewById(R.id.rgOpcao1);
        prova = new Prova();
        view1 = (TextView) findViewById(R.id.viewquestao1);
    }

    public void proximot3(View v){
        int op = rgOpcao1.getCheckedRadioButtonId();
        if (op== R.id.rbresp1){
          cont++;
        }
        prova.setQuestao1(view1.getText().toString());
        prova.setResposta1("a");
        prova.setPontos(cont);

        Bundle bundle = new Bundle();
         bundle.putSerializable("objaluno", aluno);
         bundle.putSerializable("objprova", prova);

     Intent intent = new Intent(getApplicationContext(),
               Tela3.class
              );
          intent.putExtras(bundle);
          startActivity(intent);
        }
    }
}
					

Agora vamos para a nossa terceira tela: Tela3.xml.

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
	 xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
	 android:layout_height="match_parent"
	 android:orientation="vertical"
	 >
	 <ImageView
		 android:layout_width="100dp"
		 android:layout_height="100dp"
		 android:src="@drawable/coruja2"
		 />
 
	 <LinearLayout
		 android:layout_width="match_parent"
		 android:layout_height="wrap_content"
		 android:orientation="vertical"
		 android:layout_margin="30dp"
		 android:background="#ccc"
		 android:padding="10dp"
		 >
		 <TextView
			 android:layout_width="match_parent"
			 android:layout_height="wrap_content"
			 android:text="2)O Hibernate é mais rapido que o Jdbc?"
			 android:id="@+id/viewquestao2"
			 />
		 <RadioGroup
			 android:layout_width="fill_parent"
			 android:layout_height="wrap_content"
			 android:layout_gravity="left"
			 android:id="@+id/rgOpcao2"
			 >
			 <RadioButton
				 android:layout_width="wrap_content"
				 android:layout_height="wrap_content"
				 android:text="a)Muito mais Rápido que o Jdbc com Jboss"
				 android:id="@+id/rbresp1"
				 />
			 <RadioButton
				 android:layout_width="wrap_content"
				 android:layout_height="wrap_content"
				 android:text="b)nao, A velocidade muito inferior"
				 android:id="@+id/rbresp2"
				 />
			 <RadioButton
				 android:layout_width="wrap_content"
				 android:layout_height="wrap_content"
				 android:text="c)Velocidade igual ..."
				 android:id="@+id/rbresp3"
				 />
 
			 <Button
				 android:layout_width="match_parent"
				 android:layout_height="match_parent"
				 android:text="Fim de Prova"
				 android:textSize="22dp"
				 android:onClick="resposta"
				 />
			 <Button
				 android:layout_width="match_parent"
				 android:layout_height="match_parent"
				 android:text="Fim"
				 android:textSize="22dp"
				 android:onClick="fim"
				 />
		 </RadioGroup>
 
	 </LinearLayout>
 </LinearLayout>
					

Em seguida vamos programar a classe: Tela3.

package coti.com.br.appprova;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RadioGroup;
import android.widget.TextView;

import entity.Aluno;
import entity.Prova;

public class Tela3  extends AppCompatActivity {

    Aluno aluno;
    Prova prova;
    RadioGroup rgOpcao2;
    TextView view2;
    int cont=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tela3);
        Intent it = getIntent();
        Bundle dados = it.getExtras();
        aluno = (Aluno) dados.getSerializable("objaluno");
        prova = (Prova) dados.getSerializable("objprova");
        rgOpcao2 = (RadioGroup) findViewById(R.id.rgOpcao2);
        view2 = (TextView) findViewById(R.id.viewquestao2);
    }

    public void resposta(View v){
        int op = rgOpcao2.getCheckedRadioButtonId();

        cont = prova.getPontos();
        if (op == R.id.rbresp2){
          cont++;
        }
        prova.setQuestao2(view2.getText().toString());
        prova.setResposta2("b");

        if (cont==2){
            prova.setSituacao("Aprovado");
            prova.setPontos(cont);
        }else{
            prova.setSituacao("Reprovado é tetra");
            prova.setPontos(cont);
        }

        AlertDialog.Builder dialogo = new AlertDialog.Builder(Tela3.this);
        StringBuffer sb = new StringBuffer();
                sb.append(aluno.toString());
                sb.append("\n\n" + prova.toString());

                 dialogo.setMessage("\n\n" + sb.toString());
                dialogo.setNeutralButton("OK",null);
                dialogo.show();
    }

  public void fim(View v){
        Intent it = new Intent(Tela3.this,MainActivity.class);
        startActivity(it);
        Tela3.this.finish();
  }
}
					

Agora vamos em AndroidManifest.xml.
Iremos adicionar as Activities: Tela2 e Tela3

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="coti.com.br.appprova">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <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=".Tela2"></activity>
        <activity android:name=".Tela3"></activity>
</application> </manifest>

Agora vamos rodar o emulador...

Digitando as informações:

Após clicar no botão "inicio da prova..."
Basta selecionar a opção e clicar no botão "RESPOSTA"

Após responder a primeira pergunta...
Selecione uma opção e finalize a prova.

Após terminar a prova será exibido o resultado.