Problem mit NumbPicker und Decimalzahl

  • Antworten:3
Steven Bühler
  • Forum-Beiträge: 2

28.08.2013, 13:29:59 via Website

Hallo liebe AndroidPIT-User!

Ich bin neu in der Android-Entwicklerwelt und habe ein Problem, bei dem ich auch nach langer Suche kein Erfolg habe.

Es geht um einen NumbPicker. Um genau zu sein, versuche ich einen NumbPicker aus diesem Tutorial so anzupassen, damit Decimalzahlen möglich sind.
1androidhub4you.com/2013/03/custom-picker-in-android-number-picker.html

Allerdings stürzt die App mit folgender Zeile ab:
1String getString = String.format("%.1f", textViewMid.getText());

So funktioniert es, leider wird die textViewMid nur als Ganzzahl ausgelesen:
1String getString = String.valueOf(textViewMid.getText());

Hier der ganze Code:
1package ch.test.numbpicker;
2
3import ch.test.numbpicker.R;
4import ch.test.numbpicker.NumbpickerActivity;
5
6import android.os.Bundle;
7import android.view.View;
8import android.view.View.OnClickListener;
9import android.widget.Button;
10import android.widget.TextView;
11import android.app.Activity;
12
13public class NumbpickerActivity extends Activity implements OnClickListener {
14 Button btnUp, btnDown;
15 TextView textViewUp, textViewMid, textViewBottom;
16
17 double nStart = 0.0;
18 double nEnd = 10.0;
19
20 @Override
21 public void onCreate(Bundle savedInstanceState)
22 {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.activity_numbpicker);
25 btnUp = (Button) findViewById(R.id.button1);
26 btnDown = (Button) findViewById(R.id.button2);
27
28 textViewUp = (TextView) findViewById(R.id.textView1);
29 textViewMid = (TextView) findViewById(R.id.textView2);
30 textViewBottom = (TextView) findViewById(R.id.textView3);
31
32 textViewUp.setText("0.1");
33 textViewMid.setText("0.0");
34 textViewBottom.setText("");
35
36 btnUp.setOnClickListener(this);
37 btnDown.setOnClickListener(this);
38 }
39
40 @Override
41 public void onClick(View v)
42 {
43// So funktionierts, allerdings nur Ganzzahl
44 String getString = String.valueOf(textViewMid.getText());
45 Double curent = Double.parseDouble(getString);
46
47 // So funktionierts leider nicht, App stürzt ab!
48 // String getString = String.format("%.1f", textViewMid.getText());
49 // Double curent = Double.parseDouble(getString);
50
51 if (v == btnUp)
52 {
53 if (curent < nEnd)
54 {
55 curent++;
56 String OutputStringUP = String.format("%.1f", (curent) + 0.1);
57 textViewUp.setText(OutputStringUP);
58 String OutputStringCURRENT = String.format("%.1f", (curent));
59 textViewMid.setText(OutputStringCURRENT);
60 String OutputStringDOWN = String.format("%.1f", (curent) - 0.1);
61 textViewBottom.setText(OutputStringDOWN);
62 }
63 }
64
65 if (v == btnDown)
66 {
67 if (curent > nStart)
68 {
69 curent--;
70 String OutputStringUP = String.format("%.1f", (curent) + 0.1);
71 textViewUp.setText(OutputStringUP);
72 String OutputStringCURRENT = String.format("%.1f", (curent));
73 textViewMid.setText(OutputStringCURRENT);
74 String OutputStringDOWN = String.format("%.1f", (curent) - 0.1);
75 textViewBottom.setText(OutputStringDOWN);
76 }
77 }
78 }
79}

Ich wäre sehr sehr dankbar, wenn mir jemand helfen kann.

Freundliche Grüsse
Steven

Antworten
impjor
  • Forum-Beiträge: 1.793

28.08.2013, 13:35:43 via App

Bei einem Absturz immer Logcat bitte.

Edith sagt: Hast du es mal mit String.format(?, current); probiert?

LG

— geändert am 28.08.2013, 13:42:37

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Steven Bühler
  • Forum-Beiträge: 2

28.08.2013, 15:11:58 via Website

Welchen Teil des Logcat's brauchst du? Nur die Error's?

1String.format(?, current);
Das habe ich noch nicht probiert, denn leider weiss ich nicht was genau du meinst.
Der String sollte ja bereits beim auslesen (getText) formatiert werden, damit die Decimalzahl korrekt ist oder irre ich mich da?

Freundliche Grüsse
Steven

Antworten
impjor
  • Forum-Beiträge: 1.793

28.08.2013, 19:57:11 via Website

Beim Logcat reicht der Error (rote Teil).

Eine Vermutung, vielleicht funktioniert es ja:
1String getString = String.valueOf(textViewMid.getText());
2Double curent = Double.parseDouble(getString);
3getString = String.format("%.1f",curent);
4curent = Double.parseDouble(getString);

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten