Naar content
Trending apps
  • Google Duo: videogesprekken van hoge kwaliteit

  • Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger: gratis sms'en en videobellen

Trending games
  • Fortnite

  • Minecraft Earth

  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

Trending smartphones
  • POCO X3

  • Samsung Galaxy Note 20 Ultra

  • Google Pixel 4a

  • OnePlus Nord

  • Samsung Galaxy A51

Nieuwste tablets
  • Samsung Galaxy Tab S6

  • Samsung Galaxy Tab A 10.5

  • Samsung Galaxy Tab S4

  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

Wim81

Wim81

  • Lid sinds 26 oktober 2015
  • Berichten 37
  • Reputatie 0
  • #1
  • 18 januari 2016
  • 20:33

Beste allen,

In mijn barcode scan app wil ik de producten die je gescand hebt, wanneer je meer van dezelfde producten koopt opnieuw in te scannen om zo opnieuw het aantal te verhogen.

Momenteel doe ik een update van het nieuwe aantal gedaan waarbij het oude aantal vervangen wordt door het nieuwe.
Maar neem nu dat je blikjes cola koopt en je hebt nog blikken cola staan, dan is er nog een aantal aanwezig.

Nu zou dan het nieuwe aantal bij het oude aantal moeten opgeteld worden.

Ik heb dat gecodeerd, maar ik stuit op een numberformat exception die zegt dat er geen aantal bestaat in die variabele, terwijl er wel een aantal aanwezig is in de databank waaruit ik dat aantal eerst ophaal.

De error is:

 Caused by: java.lang.NumberFormatException: Invalid int: ""

De code die ik gebruik is:

EditText numberTxt = (EditText) findViewById(R.id.etxt_prodNumber);


String prodNumber = numberTxt.getText().toString();
String pnumber = adapter.getProdNumber(scanContent).trim();

int number = Integer.parseInt(pnumber) + Integer.parseInt(prodNumber);

String nr = Integer.toString(number);

adapter.updateProdNumber(prodCodenr, nr, prodPrice);


Het rare is dat hij dus aangeeft dat er niets in de databank zit voor dat product, maar er is wel een aantal.

Wim

redbulletnl

redbulletnl

  • Lid sinds 02 september 2011
  • Berichten 2982
  • Reputatie 60
  • #2
  • 19 januari 2016
  • 09:27

Als je met een log of Toast probeert je variable zichtbaar te maken?

Je zou ook een breakpoint kunnen zetten waar je de Integer probeert te parsen en kijken of de pnumber en prodNumber wel gevuld zijn.

Wim81

Wim81

  • Lid sinds 26 oktober 2015
  • Berichten 37
  • Reputatie 0
  • #3
  • 19 januari 2016
  • 09:35

Als je met een log of Toast probeert je variable zichtbaar te maken? Je zou ook een breakpoint kunnen zetten waar je de Integer probeert te parsen en kijken of de pnumber en prodNumber wel gevuld zijn.

Ik heb de Toast al reeds geprobeerd en die geeft de waarde van in de db terug. Dus in die variabele zit echt wel een waarde.

Bewerkt (19 januari 2016 09:38) | Eerste poging mislukt ;)
Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 2401
  • Reputatie 20
  • #4
  • 20 januari 2016
  • 14:51

If the user left the edittext empty an error occurs java.lang.NumberFormatException: Invalid int: ""

Use following.

 a = e1.getText().toString().trim();    
b = e2.getText().toString().trim();
if (a.equals("") && b.equals("") ){ }




Bewerkt (20 januari 2016 14:52)

Oukitel K5000 7.0 (nog) ongeroot
Samsung Note geroot 4.2.1 Spirit Rom (op sterven na dood)
HTC Desire geroot Slim Rom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3
Samsung A8 ongeroot (werk)
Umidigi a5 Pro ongeroot (nog wel).

Wim81

Wim81

  • Lid sinds 26 oktober 2015
  • Berichten 37
  • Reputatie 0
  • #5
  • 20 januari 2016
  • 14:57

If the user left the edittext empty an error occurs java.lang.NumberFormatException: Invalid int: "" Use following.
 a = e1.getText().toString().trim(); b = e2.getText().toString().trim(); if (a.equals("") && b.equals("") ){ } 
Dag Timelord,

inderdaad als je de twee wil vergelijken is dit nuttig.

Maar in mijn applicatie wordt 1 EditText gebruikt die ze moeten invullen als het nieuwe aantal.
Dan wordt in de code het oude aantal van dat product uit de databank opgehaald en is het dus de bedoeling dat het nieuwe aantal bij het oude wordt opgeteld.

Echter wanneer ik het oude totaal uit de db ophaal (dit is een String) en wil converteren naar een int, dan geeft hij de numberformat exception Invalid int "". Terwijl er wel degelijk een waarde in zit.

En de EditText heeft ook een waarde.

Wim

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 2401
  • Reputatie 20
  • #6
  • 20 januari 2016
  • 16:47

Nee het ging er om, dat je moet controleren of je editveld leeg is en zo ja onderneem dan de actie die erbij hoort.

a.equals("")of  !a==null of !a.isempty()

zijn allemaal commando's waarme je een error kunt afvangen.

Oukitel K5000 7.0 (nog) ongeroot
Samsung Note geroot 4.2.1 Spirit Rom (op sterven na dood)
HTC Desire geroot Slim Rom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3
Samsung A8 ongeroot (werk)
Umidigi a5 Pro ongeroot (nog wel).

Wim81

Wim81

  • Lid sinds 26 oktober 2015
  • Berichten 37
  • Reputatie 0
  • #7
  • 1 februari 2016
  • 15:31

Hello Timelord,

ik heb het probleempje intussen zelf opgelost via een andere weg. Die eigenlijk visueel ook logischer is.

Ik heb eerst nog een extra veld voorzien voor het huidige aantal. Zodat de gebruiker kan zien wat hij nog staan heeft.
Daaronder is dan een veld voor het nieuwe aantal in te geven.

Via de twee edit velden kan ik dan gemakkelijk parsen naar Integers en de berekening doen.
Dus via deze weg werkt het prima.

Nu heb ik wel nog één ander probleempje.

In de lijst waar de producten in opgelijst te komen staan op het scherm, wordt voor elk product een rij getoond.
Dus telkens een nieuw product toegevoegd wordt, wordt dit in een nieuwe rij getoond. Doch alle kolommen werken hieraan mee behalve de kolom van het aantal. Die zet alle aantallen in dezelfde rij.

Nochtans als ik bij "product aanvullen" het huidige aantal ophaal, dan geeft hij in het huidig aantal veld op de product aanvullen activiteit wel het juiste aantal van dat gescande product. Dus aan de db ligt het al niet.

Ik gebruik voor de tabel en TableLayout met TableRows en textvelden.

De code lijkt mij wel goed dus zie niet echt waar het fout loopt?

Grts
Wim

Wim81

Wim81

  • Lid sinds 26 oktober 2015
  • Berichten 37
  • Reputatie 0
  • #8
  • 1 februari 2016
  • 16:39

Ik heb het toch gevonden. Ik was een +"\n" vergeten in de database adapter waar ik het aantal teruggeef uit de stringbuffer.

Toch bedankt voor de info op de initiele vraag.

Groetjes
Wim

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 2401
  • Reputatie 20
  • #9
  • 1 februari 2016
  • 17:52

Ik herken de frustratie. Een hele avond zoeken naar een probleem en die blijkt dan zeer pietluttig (EN eigen fout!!) te zijn.

Maar ik ben blij dat de problemen tot zo ver opgelost zijn.

Heb je weer vragen, vraag gerust !!!.

Oukitel K5000 7.0 (nog) ongeroot
Samsung Note geroot 4.2.1 Spirit Rom (op sterven na dood)
HTC Desire geroot Slim Rom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3
Samsung A8 ongeroot (werk)
Umidigi a5 Pro ongeroot (nog wel).

Wim81

Wim81

  • Lid sinds 26 oktober 2015
  • Berichten 37
  • Reputatie 0
  • #10
  • 2 februari 2016
  • 10:13

Ik herken de frustratie. Een hele avond zoeken naar een probleem en die blijkt dan zeer pietluttig (EN eigen fout!!) te zijn. Maar ik ben blij dat de problemen tot zo ver opgelost zijn. Heb je weer vragen, vraag gerust !!!.
Altijd fijn hulpvaardige android developers te hebben.

Is inderdaad soms frustrerend en tijdverspillend om over stomme foutjes heen te kijken om het dan weken nadien te ontdekken. Maar bon, als het uiteindelijk goed komt is het het waard he.

Alvast bedankt voor alle hulp.

Groetjes
Wim

Reageer

Om te reageren, dien je te zijn ingelogd. Druk op de onderstaande knop om in te loggen of maak een nieuwe account aan.

Inloggen Registreren