Good afternoon
I'll be sure, I'm trying to make a query using sqlite
public ArrayList<CXCPSaldoClienteProveedor> ObtenerClienteZona()
{
ArrayList<CXCPSaldoClienteProveedor> ArrayClienteZona = new ArrayList<CXCPSaldoClienteProveedor>();
Cursor aRS = querySql("SELECT * FROM " + DBhelper.TABLE_NAME + " WHERE " + DBhelper.COLUMN_NAME_Zona + " = " + settings.getInt("ONControlZonaCliente",0),null);
if (aRS.getCount() > 0){
while (aRS.moveToNext()){
CXCPSaldoClienteProveedor newdetalle = new CXCPSaldoClienteProveedor(
(aRS.getInt(aRS.getColumnIndex(DBhelper.COLUMN_NAME_Empresa))),
(aRS.getInt(aRS.getColumnIndex(DBhelper.COLUMN_NAME_Cliente))),
(aRS.getString(aRS.getColumnIndex(DBhelper.COLUMN_NAME_ClienteClave))),
(aRS.getString(aRS.getColumnIndex(DBhelper.COLUMN_NAME_ClienteDescripcion))),
(aRS.getString(aRS.getColumnIndex(DBhelper.COLUMN_NAME_ClienteDatosGenerales))),
(aRS.getInt(aRS.getColumnIndex(DBhelper.COLUMN_NAME_Moneda))),
(aRS.getInt(aRS.getColumnIndex(DBhelper.COLUMN_NAME_Zona))),
(aRS.getString(aRS.getColumnIndex(DBhelper.COLUMN_NAME_ZonaClave))),
(aRS.getString(aRS.getColumnIndex(DBhelper.COLUMN_NAME_ZonaDescripcion))),
(aRS.getDouble(aRS.getColumnIndex(DBhelper.COLUMN_NAME_Saldo))),
(aRS.getDouble(aRS.getColumnIndex(DBhelper.COLUMN_NAME_SaldoVencido))));
ArrayClienteZona.add(newdetalle);
}
}
aRS.close();
CloseDB();
return ArrayClienteZona;
}
In which I consult my client table where zone is equal, to what I have saved in my sharedpreferences
, that preference I take it from a alertdialog singlechoice
, which also filled from my base de datos
of sqlite
public void ObtenerZona() {
ZonaArrayList = oBD.ObtenerZonas();
final String[] zona = new String[ZonaArrayList.size()];
for(int i=0; i<ZonaArrayList.size(); i++){
//Obtiene el campo Descripción y lo agrega al array de strings "zona".
zona[i] = ZonaArrayList.get(i).getDescripcion();
}
AlertDialog.Builder alertdialog = new AlertDialog.Builder(Clientes.this);
alertdialog.setTitle("Selecciona la Zona");
SharedPreferences settings = getSharedPreferences("ONC_Settings", 0);
alertdialog.setSingleChoiceItems(zona, settings.getInt("ONControlZonaCliente",1), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
SharedPreferences settings = getSharedPreferences("ONC_Settings", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("ONControlZonaCliente",ZonaArrayList.get(which).getId());
editor.commit();
}
})
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Mandar a llamar metodo Clientes con el filtro
SharedPreferences settings = getSharedPreferences("ONC_Settings", 0);
ObtenerClienteZ();
}
})
.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alerdoalog = alertdialog.create();
alerdoalog.show();
}
The problem is when I select the zone and it passes to my query it thunders and throws me the following error:
FATAL EXCEPTION: main Process: mx.com.oncontrol.oncontrol, PID: 5901 java.lang.NullPointerException at mx.com.oncontrol.oncontrol.SqliteDB.ObtainClientZone (SqliteDB.java:258) at mx.com.oncontrol.oncontrol.Clientes.ObtenerClienteZ (Clientes.java:270) at mx.com.oncontrol.oncontrol.Clientes $ 5.onClick (Clientes.java:312) at android.support.v7.app.AlertController $ ButtonHandler.handleMessage (AlertController.java:157) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative (Native Method) at java.lang.reflect.Method.invoke (Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:601) at dalvik.system.NativeStart.main (Native Method)
Someone can help me by saying how I can access my preferences to make my query.