Problema para retornar objeto

Boa tarde pessoal, estou com o seguinte problema: eu tenho uma condição que verifica se no meu Cursor eu tenho pelo menos 1 registro vindo do banco, se eu tiver eu seto as propriedades do meu objeto para retornar, caso contrário, retorno nulo. Porém, quando eu tenho um registro e preencho o meu objeto, sempre antes de retornar o objeto preenchido, ele cai no else.

[code]public static ActividadOT verificarExistenciaActividad(String codActividadOT) {
SQLiteDatabase db = DBHelper.getInstance().getWritableDatabase();

	String filtro = ActividadOT.C_COD_ACTIVIDAD_OT + " = ?";
	String[] valores = new String[] { codActividadOT };

	Cursor c = db.query(ActividadOT.TABELA, ActividadOT.TODAS_COLUNAS, filtro, valores, null, null, null);
	ActividadOT entidade = new ActividadOT();
	
	// Quando eu tenho um registro retornado, ele entra dentro desse bloco...
	if (c.moveToFirst()) {
		// As propriedades são setadas
		entidade.setOidActividadOT(c.getString(c.getColumnIndex(ActividadOT.C_OID_ACTIVIDAD_OT)));
		entidade.setCodActividadOT(c.getString(c.getColumnIndex(ActividadOT.C_COD_ACTIVIDAD_OT)));
		/* As propriedades são setadas até esse momento, aqui ele pula pro else, 
		 * se eu retirar essa linha, ele pula pro else da mesma forma, sempre 1 linha antes do return entidade
		 */
		entidade.setDesNombreActividadOT(c.getString(c.getColumnIndex(ActividadOT.C_DES_NOMBRE_ACTIVIDAD_OT))); 
		return entidade;
	} else {
		return null; // Sempre cai nessa linha antes de retornar 
	}
}[/code]

Detalhe, no código abaixo ele mantém o objeto intacto até o System.out.print. Na hora de retornar o objeto entidade, fora do if/else, ele perde a referência do objeto.

[code]public static ActividadOT verificarExistenciaActividad(String codActividadOT) {
SQLiteDatabase db = DBHelper.getInstance().getWritableDatabase();

	String filtro = ActividadOT.C_COD_ACTIVIDAD_OT + " = ?";
	String[] valores = new String[] { codActividadOT };

	Cursor c = db.query(ActividadOT.TABELA, ActividadOT.TODAS_COLUNAS, filtro, valores, null, null, null);
	ActividadOT entidade = new ActividadOT();
	
	if (c.moveToFirst()) {
		entidade.setOidActividadOT(c.getString(c.getColumnIndex(ActividadOT.C_OID_ACTIVIDAD_OT)));
		entidade.setCodActividadOT(c.getString(c.getColumnIndex(ActividadOT.C_COD_ACTIVIDAD_OT)));
		entidade.setDesNombreActividadOT(c.getString(c.getColumnIndex(ActividadOT.C_DES_NOMBRE_ACTIVIDAD_OT))); 
		System.out.print(entidade.getCodActividadOT());
	} else {
		return null;
	}
	return entidade;
}[/code]

Alguém tem alguma luz?

Você já rodou isso no debugger?

Se ele entra no IF com certeza não vai passar pelo ELSE. Ou um ou outro…

Se ele está indo pro ELSE então nem entra no IF…

O que esse método moveToFirst() faz?

Sim, já debuguei, ele realmente vai até a linha anterior ao “return entidade;” e a partir dai pula pro else.

O moveToFirst() move a posição do cursor (objeto que possui os registros retornados por uma consulta no SQLite) para sua primeira linha, pra a partir dai obter os valores que estão no cursor. Se o cursor estiver vazio, o cursor.moveToFirst() retorna falso.