webForumDet fria alternativet

Androidprogrammering

Java

2 svar · 1 363 visningar · startad av urban hahne

Medlem sedan okt. 200622 inlägg
Frågan#1

Hej. Det var ett bra tag sedan jag var inne på forat. Jag försöker nu lära mig programmera appar till Android mobiler. Jag har följt ett exempel på youtube där man tillverka en enkel "TipCalculator". Den funkar alldeles ok om jag testar den i "viritual device emulator" men när jag kör den i min mobil funkar det inte. Problemet uppstår när man med hjälp av en seekbar vill ändra på ett numeriskt värde.

public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
						
			tipAmount = (tipSeekBar.getProgress()) * .01;
			tipAmountET.setText(String.format("%.02f", tipAmount));
			uppdateTipAndFinalBill();
			
		}

När jag kör i emulatorn så läggs decimaltalet in i tipAmount med decimalpunkt, men i min mobil blir det ett decimalkomma (förmodligen för att den är svensk). Emulatorn är inställ på engelska. När jag sedan gör uppdateTipAndFinalBill() så skiter det sig.

private void uppdateTipAndFinalBill() {
		double tipAmount = Double.parseDouble(tipAmountET.getText().toString());
		double finalBill = billBeforeTip + (billBeforeTip * tipAmount);
		finalBillET.setText(String.format("%.02f",finalBill));

Hur löser man detta? Jag vill ju att programmet skall funka i den Svenska mobilen.

Medlem sedan juni 20031 837 inlägg
#2

Kan inte ge dig exakt lösning men efter lite sökning så kan man använda detta för att hitta decimaltecken

DecimalFormatSymbols d = new DecimalFormatSymbols(Locale.getDefault());

sen får du ändra på den här raden

finalBillET.setText(String.format("%.02f",finalBill));

så att du hårdkodar decimaltecknet efter %

Hoppas det hjälper dig lite på vägen.

Medlem sedan okt. 200622 inlägg
#3

Jag hittade denna enkla lösning på problemet:

Locale.setDefault(new Locale("en", "US"));
259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)