· 7 years ago · Dec 18, 2018, 04:58 PM
1E/AndroidRuntime: FATAL EXCEPTION: main
2 Process: com.alura.magnero2018.agendaalura, PID: 24918
3 java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
4 at com.alura.magnero2018.agendaalura.FormularioHelper.pegarAluno(FormularioHelper.java:73)
5 at com.alura.magnero2018.agendaalura.FormularioActivity.onOptionsItemSelected(FormularioActivity.java:63)
6 at android.app.Activity.onMenuItemSelected(Activity.java:3547)
7 at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:436)
8 at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:196)
9 at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109)
10 at android.support.v7.app.AppCompatDelegateImpl.onMenuItemSelected(AppCompatDelegateImpl.java:888)
11 at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:840)
12 at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
13 at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:991)
14 at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:981)
15 at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:625)
16 at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:151)
17 at android.view.View.performClick(View.java:6600)
18 at android.view.View.performClickInternal(View.java:6577)
19 at android.view.View.access$3100(View.java:781)
20 at android.view.View$PerformClick.run(View.java:25912)
21 at android.os.Handler.handleCallback(Handler.java:873)
22 at android.os.Handler.dispatchMessage(Handler.java:99)
23 at android.os.Looper.loop(Looper.java:193)
24 at android.app.ActivityThread.main(ActivityThread.java:6912)
25 at java.lang.reflect.Method.invoke(Native Method)
26 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
27 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)
28Application terminated.
29
30package com.alura.magnero2018.agendaalura;
31
32import android.content.Intent;
33import android.support.v7.app.AppCompatActivity;
34import android.os.Bundle;
35import android.view.Menu;
36import android.view.MenuInflater;
37import android.view.MenuItem;
38import android.widget.Toast;
39
40import alura.modelo.Aluno;
41import br.com.alura.dao.AlunoDAO;
42
43public class FormularioActivity extends AppCompatActivity {
44
45 @Override
46 protected void onCreate(Bundle savedInstanceState) {
47 super.onCreate(savedInstanceState);
48 setContentView(R.layout.activity_formulario);
49 FormularioHelper helper = new FormularioHelper(this);
50 }
51
52 @Override
53 public boolean onCreateOptionsMenu(Menu menu)
54 {
55 inflater.inflate(R.menu.activity_menu_formulario, menu);
56 return super.onCreateOptionsMenu(menu);
57 }
58
59 @Override
60 public boolean onOptionsItemSelected(MenuItem item)
61 {
62 FormularioHelper helper = new FormularioHelper(this);
63
64
65 switch (item.getItemId())
66 {
67 case R.id.menu_formulario_ok:
68
69 Aluno aluno = helper.pegarAluno();
70 AlunoDAO dao = new AlunoDAO(this);
71 dao.insere(aluno);
72 dao.close();
73
74 Toast.makeText(FormularioActivity.this, "Aluno" + aluno.getNome() + "salvo", Toast.LENGTH_LONG).show();
75 Intent abrirLista = new Intent(FormularioActivity.this, ListaAlunosActivity.class);
76 startActivity(abrirLista);
77
78 finish();
79 break;
80 }
81 return super.onOptionsItemSelected(item);
82 }
83}
84
85package alura.modelo;
86
87import android.text.Editable;
88
89public class Aluno {
90 private Long id;
91 private String nome;
92 private String endereco;
93 private String telefone;
94 private String site;
95 private Double nota;
96
97 public Long getId() {
98 return id;
99 }
100
101 public void setId(Long id) {
102 this.id = id;
103 }
104
105 public String getNome() {
106 return nome;
107 }
108
109 public void setNome(String nome) {
110 this.nome = nome;
111 }
112
113 public String getEndereco() {
114 return endereco;
115 }
116
117 public void setEndereco(String endereco) {
118 this.endereco = endereco;
119 }
120
121 public String getTelefone() {
122 return telefone;
123 }
124
125 public void setTelefone(String telefone) {
126 this.telefone = telefone;
127 }
128
129 public String getSite() {
130 return site;
131 }
132
133 public void setSite(String site) {
134 this.site = site;
135 }
136
137 public Double getNota() {
138 return nota;
139 }
140
141 public void setNota(Double nota) {
142 this.nota = nota;
143 }
144
145 public String toString() {
146 return getId() + " " + getNome();
147 }
148}
149
150package com.alura.magnero2018.agendaalura;
151
152import android.widget.EditText;
153import android.widget.RatingBar;
154
155import com.alura.magnero2018.agendaalura.FormularioActivity;
156import com.alura.magnero2018.agendaalura.R;
157
158
159import alura.modelo.Aluno;
160
161public class FormularioHelper
162{
163 private EditText campoNome;
164 private EditText campoEndereco;
165 private EditText campoSitesPessoais;
166 private EditText campoTelefone;
167 private RatingBar campoNotas;
168
169 public EditText getCampoNome() {
170 return campoNome;
171 }
172
173 public void setCampoNome(EditText campoNome) {
174 this.campoNome = campoNome;
175 }
176
177 public EditText getCampoEndereco() {
178 return campoEndereco;
179 }
180
181 public void setCampoEndereco(EditText campoEndereco) {
182 this.campoEndereco = campoEndereco;
183 }
184
185 public EditText getCampoSitesPessoais() {
186 return campoSitesPessoais;
187 }
188
189 public void setCampoSitesPessoais(EditText campoSitesPessoais) {
190 this.campoSitesPessoais = campoSitesPessoais;
191 }
192
193 public EditText getCampoTelefone() {
194 return campoTelefone;
195 }
196
197 public void setCampoTelefone(EditText campoTelefone) {
198 this.campoTelefone = campoTelefone;
199 }
200
201 public RatingBar getCampoNotas() {
202 return campoNotas;
203 }
204
205 public void setCampoNotas(RatingBar campoNotas) {
206 this.campoNotas = campoNotas;
207 }
208
209
210 public FormularioHelper(FormularioActivity activity)
211 {
212 EditText campoNome = activity.findViewById(R.id.nome);
213 EditText campoEndereco = activity.findViewById(R.id.endereco);
214 EditText campoSitesPessoais = activity.findViewById(R.id.sitesPessoais);
215 EditText campoTelefone = activity.findViewById(R.id.telefone);
216 RatingBar campoNotas = (RatingBar) activity.findViewById(R.id.notas);
217 }
218
219 public Aluno pegarAluno()
220 {
221 Aluno aluno = new Aluno();
222 aluno.setNome(String.valueOf(campoNome.getText()));
223 aluno.setEndereco(String.valueOf(campoEndereco.getText()));
224 aluno.setSite(String.valueOf(campoSitesPessoais.getText()));
225 aluno.setTelefone(String.valueOf(campoTelefone.getText()));
226 aluno.setNota(Double.valueOf(campoNotas.getProgress()));
227
228 return aluno;
229 }
230}
231
232package br.com.alura.dao;
233
234import android.content.ContentValues;
235import android.content.Context;
236import android.database.Cursor;
237import android.database.DatabaseErrorHandler;
238import android.database.sqlite.SQLiteDatabase;
239import android.database.sqlite.SQLiteOpenHelper;
240
241import java.util.ArrayList;
242import java.util.List;
243
244import alura.modelo.Aluno;
245
246public class AlunoDAO extends SQLiteOpenHelper
247{
248
249 public AlunoDAO (Context context) {
250 super(context, "Agenda", null, 1);
251 }
252
253 @Override
254 public void onCreate(SQLiteDatabase db) {
255 String sql = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY, nome TEXT NOT NULL, endereco TEXT, site TEXT, nota REAL);";
256
257 }
258
259 @Override
260 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
261 {
262 String sql = "DROP TABLE IF EXISTS Alunos";
263 db.execSQL(sql);
264 onCreate(db);
265 }
266
267 public void insere(Aluno aluno)
268 {
269 SQLiteDatabase db = getWritableDatabase();
270
271 ContentValues dados = new ContentValues();
272 dados.put("nome", aluno.getNome());
273 dados.put("endereco", aluno.getEndereco());
274 dados.put("telefone", aluno.getTelefone());
275 dados.put("site", aluno.getSite());
276 dados.put("nota", aluno.getNota());
277
278 db.insert("Alunos", null, dados);
279 }
280
281 public List<Aluno> buscaAlunos()
282 {
283 String sql = "SELECT * FROM Alunos;";
284 SQLiteDatabase db = getReadableDatabase();
285 Cursor c = db.rawQuery(sql, null);
286
287 List<Aluno> alunos = new ArrayList<Aluno>();
288 while (c.moveToNext())
289 {
290 Aluno aluno = new Aluno();
291 aluno.setId(c.getLong(c.getColumnIndex("id")));
292 aluno.setNome(c.getString(c.getColumnIndex("nome")));
293 aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));
294 aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));
295 aluno.setSite(c.getString(c.getColumnIndex("site")));
296 aluno.setNota(c.getDouble(c.getColumnIndex("nota")));
297 }
298
299 c.close();
300 return alunos;
301 }
302}