Android - NullPointerException en SQQLite - eclipse android

 
Vista:
Imágen de perfil de Jonhatan

NullPointerException en SQQLite - eclipse android

Publicado por Jonhatan (4 intervenciones) el 11/11/2014 18:28:39
Hola, estoy viendo el tema "SQLite en android" y al crear mi primera pequeña aplicacion de ejemplo que solo tiene una tabla en una clase y en el MainActivity 2 edittext un spinner y 2 botones ( uno para insertar un registro y el otro para consultar), la aplicacion corre en el emulador pero al moemento de ingresar los datos y al darle clic en el boton "insertar" me salta un error de NullPointerException.
dejo el codigo que es muy sencillo para los que ya sepan programar android para porfavor me echen una manito con esta excepcion que no se de donde sale.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de James
Val: 103
Bronce
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

NullPointerException en SQQLite - eclipse android

Publicado por James (34 intervenciones) el 12/11/2014 03:36:48
Hola amigo, al parecer se te olvidó añadir el código. Por favor pega los registros del logcat.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jonhatan

NullPointerException en SQQLite - eclipse android

Publicado por Jonhatan (4 intervenciones) el 12/11/2014 14:40:52
El ejercicio es hacer 2 EditTeext donde sse ingrese la identificacion y el nombre, un Spinner donde se puede seleccionar el voto de la persona: si o no, 2 botones , uno que inserta la persona con su votacion y otro que calcule cuantas personas ingresadas en la base de datos votaron que si.


Clase DbHelper:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.example.quizsqlite;
 
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
 
public class DbHelper extends SQLiteOpenHelper{
 
	 String CreateTbPersonas = "create table TbPersonas(id INTEGER, nombre TEXT, voto TEXT)";
 
	public DbHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
 
 
 
 
	}
 
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL(CreateTbPersonas);
 
	}
 
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		db.execSQL("drop table if exist TbPersonas");
		db.execSQL(CreateTbPersonas);
 
	}
 
}


MainActivity:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package com.example.quizsqlite;
 
import android.support.v7.app.ActionBarActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class MainActivity extends ActionBarActivity implements OnClickListener {
 
	EditText identificacion,nombre;
	Spinner voto;
	TextView resultado;
	Button botonInsertar,botonConsultar;
	SQLiteDatabase db;
	String [] datos ={"voto","si","no"};
	int contadorSi;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        nombre = (EditText)findViewById(R.id.etNombre);
        voto = (Spinner)findViewById(R.id.spVoto);
        resultado = (TextView)findViewById(R.id.tvResultado);
        botonInsertar = (Button)findViewById(R.id.btnInsert);
        botonInsertar.setOnClickListener(this);
        botonConsultar = (Button)findViewById(R.id.btnConsultar);
        botonConsultar.setOnClickListener(this);
        DbHelper Helper = new DbHelper(this,"DbVotaciones", null, 1);
        db = Helper.getWritableDatabase();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.itemlistavoto,datos);
        voto.setAdapter(adapter);
    }
 
 
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
 
 
 
	@Override
	public void onClick(View v) {
		if (v == botonInsertar) {
			int iden = Integer.parseInt(identificacion.getText().toString());
			String nom = nombre.getText().toString();
			String respuestaVoto = voto.getSelectedItem().toString();
			ContentValues valores = new ContentValues();
			valores.put("identificacion", iden);
			valores.put("nombre", nom);
			valores.put("voto", respuestaVoto);
			db.insert("TbPersonas", null, valores);
			identificacion.setText("");
			nombre.setText("");
			Toast.makeText(this, "se ha insertado correctamente", Toast.LENGTH_SHORT).show();
 
		}else
			if (v == botonConsultar) {
				Cursor C = db.rawQuery("select voto from TbPersonas", null);
 
				if (C.moveToFirst()) {
					do {
						String votoTemp = C.getString(C.getColumnIndex("voto"));
						if (votoTemp == "si") {
							contadorSi = contadorSi + 1;
						}
					} while (C.moveToNext());
					resultado.setText(contadorSi + "personas votaron que si");
				}else
					resultado.setText("ninguna persona voto que si");
 
			}
 
	}
 
 
 
 
}


main_activity:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.quizsqlite.MainActivity" >

<EditText
android:id="@+id/etIdentificacion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Identificacion"
android:inputType="number" />

<EditText
android:id="@+id/etNombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nombre"
android:inputType="text" />

<Spinner
android:id="@+id/spVoto"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<Button
android:id="@+id/btnInsert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Insertar" />

<Button
android:id="@+id/btnConsultar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Consultar" />

<TextView
android:id="@+id/tvResultado"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:textSize="20dp"
android:layout_marginTop="20dp" />

</LinearLayout>

itemlistavoto: este es un simple archivo xml de tipo TextView que le paso como parametro al adapter

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="30dp" >


</TextView>


CUANDO EJECUTO LA APLICACION, TODO ESTA NORMAL, PERO AL DAR CLIC EN EL BOTON "Insertar" ME SALTA ESTA EXCEPTION:

FATAL EXCEPTION: main
Process: com.example.quizsqlite, PID 1198
java.lang.NullPointerException
at com.example.quizsqlite.MainActivity.onClick(MainActivity.java:76)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de James
Val: 103
Bronce
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

NullPointerException en SQQLite - eclipse android

Publicado por James (34 intervenciones) el 12/11/2014 20:43:58
Hola amigo, estuve revisando el código y sucede que el EditText "identificacion" es declarada en el inicio de la actividad pero cuando quieres obtener su texto se produce una excepcion debido a que nunca fue inicializado.

Es decir, jamas le asignaste algún valor al igual que lo hiciste con "nombre". La solución es inicializarlo antes de acceder a el.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jonhatan

NullPointerException en SQQLite - eclipse android

Publicado por Jonhatan (4 intervenciones) el 13/11/2014 17:30:35
Amigo muchisimas gracias, en verdad me salvaste de un dolor de cabeza, tenias razon, por eso el exception.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de James
Val: 103
Bronce
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

NullPointerException en SQQLite - eclipse android

Publicado por James (34 intervenciones) el 13/11/2014 20:16:05
Con gusto :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar