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

Que ficará assim:


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

    Que ficará assim:

    <?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"

    Que ficará assim:

    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

    Que ficará assim:

     <?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

    Que ficará assim:

    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>
    Ficará assim:

    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.

    Desse jeito: