2 NumberPicker in 1 Textfeld mit komma

  • 6 Antworten
  • Neuester Beitrag
Diskutiere 2 NumberPicker in 1 Textfeld mit komma im Android App Entwicklung im Bereich Betriebssysteme & Apps.
M

merlin2105

Neues Mitglied
Hallo,
ich bin absoluter JAVA/Eclipse Anfänger, und am verzweifeln, seit 2 Tagen suche ich nun nach einer Lösung, ohne Erfolg, denke es ist nur eine Kleinigkeit:

ich habe 2 NumberPicker, die jeweils 1 zahl in 1 Textfeld ausgeben,
ich benötige aber aus den 2 einzelnen zahlen in einem anderen textfeld eine Kommazahl (7.1) da ich mit dieser rechnen will!

hier mein code:
public void setupUI()
{

String commaValue = picka + "." + pickb;
Float value = Float.parseFloat(commaValue);


TextView view = (TextView) findViewById(R.id.ph_wert);

view.setText("7");

TextView view1 = (TextView) findViewById(R.id.ph_wert_a);

view1.setText("1");

TextView view2 = (TextView) findViewById(R.id.phfin);
view2.setText(String.valueOf(commaValue));



khx = (TextView) findViewById(R.id.kh_wert);
picka = (TextView) findViewById(R.id.ph_wert);
pickb = (TextView) findViewById(R.id.ph_wert_a);


NumberPicker kp = (NumberPicker) findViewById(R.id.kh_picker);

NumberPicker px = (NumberPicker) findViewById(R.id.pickera);
NumberPicker py = (NumberPicker) findViewById(R.id.pickerb);

kp.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
px.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
py.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);



kp.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
khx.setText(String.valueOf(newVal));


}
});

px.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
picka.setText(String.valueOf(newVal));

}
});

py.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
pickb.setText(String.valueOf(newVal));

}
});

kp.setMaxValue(9);
kp.setMinValue(1);
kp.setValue(7);

px.setMaxValue(9);
px.setMinValue(0);
px.setValue(7);

py.setMaxValue(9);
py.setMinValue(0);
py.setValue(7);


}

so stürtz mir die app sofort ab beim aufrufen,
Lösche ich Float value = Float.parseFloat(commaValue);
wird mir in meinem Textfeld phfin nur null.null ausgegeben,

wo sind hier meine Fehler, ich verzweifel noch!

Vielen dank schon mal für die Hilfe
 
Max1809

Max1809

Fortgeschrittenes Mitglied
String commaValue = picka + "." + pickb;
Float value = Float.parseFloat(commaValue);
Was sind hier "picka" und "pickb" ? Variablendeklaration fehlt dazu ...

Wenn du hier auf Controls der Maske zugreifen willst, musst du es anders machen - das hast du weiter unten im Code auch gemacht. ;)

Ebenso hier:
khx = (TextView) findViewById(R.id.kh_wert);
picka = (TextView) findViewById(R.id.ph_wert);
pickb = (TextView) findViewById(R.id.ph_wert_a);
Hier fehlt die Deklaration dieser Variablen - du weißt Ihnen hier nur einen Wert zu?
 
M

merlin2105

Neues Mitglied
Booahh,
sage ja, ich bin blutiger anfänger, und lerne eigentlich nur aus probieren, damit kommt man aber nicht immer ans ziehl..:)

ich verstehe absolut nicht was du mir damit sagen willst, wie müsste es den geschrieben sein das es geht! picka und pickb ist das was in dem textfeld steht!
 
Max1809

Max1809

Fortgeschrittenes Mitglied
merlin2105 schrieb:
Grundsätzlich: Was willst Du mit dieser Methode erreichen und wann wird diese aufgerufen?
Bekommst Du nicht schon von dem Compiler (sogar vom JIT-Compiler) Fehler?
Hast Du überhaupt Erfahrungen in dem Programmieren? Falls nein: Würde ich Dir empfehlen erstmal grundsätzliche Dinge zu klären: Was ist eine Klasse, eine Methode, GUI, Variablen usw. :)

Ich habe mal deinen Code so wie Du ihn hier gepostet hast, übernommen. Ich kriege schon vom Compiler Fehler - im Eclipse (womit entwickelst Du eigentlich?) findest Du im Reiter "Problems" alle syntaktische Fehler.


public void setupUI()
{

String commaValue = picka + "." + pickb;
Wenn Du hier auf die Textfelder zugreifen willst, musst Du das so machen, wie du das bei der TextView machst:

Erstmal das Control über die Methode "findViewById()" holen:

EditText txtTemp1 = (EditText)findViewById(R.id.pickA)

Dann holst Du Dir den Wert über die Methode "getText()".

Um alles zu kürzen, könntest Du sogar folgendes machen:


String commaValue = findViewById(R.id.pickA).GetText() + "." + findViewById(R.id.pickB).GetText()


Float value = Float.parseFloat(commaValue);


TextView view = (TextView) findViewById(R.id.ph_wert);

view.setText("7");

TextView view1 = (TextView) findViewById(R.id.ph_wert_a);

view1.setText("1");

TextView view2 = (TextView) findViewById(R.id.phfin);
view2.setText(String.valueOf(commaValue));



TextView khx = (TextView) findViewById(R.id.kh_wert);
TextView picka = (TextView) findViewById(R.id.ph_wert);
TextView pickb = (TextView) findViewById(R.id.ph_wert_a);

Hier fehlten die Datentypen vor den Variablen!

NumberPicker kp = (NumberPicker) findViewById(R.id.kh_picker);

NumberPicker px = (NumberPicker) findViewById(R.id.pickera);
NumberPicker py = (NumberPicker) findViewById(R.id.pickerb);

kp.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
px.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
py.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);



kp.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
khx.setText(String.valueOf(newVal));


}
});

px.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
picka.setText(String.valueOf(newVal));

}
});

py.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
pickb.setText(String.valueOf(newVal));

}
});

kp.setMaxValue(9);
kp.setMinValue(1);
kp.setValue(7);

px.setMaxValue(9);
px.setMinValue(0);
px.setValue(7);

py.setMaxValue(9);
py.setMinValue(0);
py.setValue(7);


}

so stürtz mir die app sofort ab beim aufrufen,
Lösche ich Float value = Float.parseFloat(commaValue);
wird mir in meinem Textfeld phfin nur null.null ausgegeben,

wo sind hier meine Fehler, ich verzweifel noch!

Vielen dank schon mal für die Hilfe

Ist das Dein ganzer Code?
 
M

merlin2105

Neues Mitglied
Ich Programmier mit Eclipse, das ist nicht mein ganzer Code, ich bekomme auch keinen Fehler angezeigt, das ist der ganze Code:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnValueChangeListener;
import android.widget.TextView;


public class Page1 extends Activity {

private TextView khx;


private TextView picka;
private TextView pickb;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.page1);
setupUI();



Button page1 = (Button) findViewById(R.id.ButtonHome);
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), ButtonPage.class);
startActivityForResult(myIntent, 0);
}

});


}

private void updateTextField() {double kh;
double ph;
double co2_ergebnis;

EditText KH = (EditText)findViewById(R.id.kh_wert);
EditText PH = (EditText)findViewById(R.id.ph_wert);

EditText Feldergebnis_co2 = (EditText)findViewById(R.id.co2_ergebnis);

if (KH.getText().toString().length() == 0) {
KH.setText(String.valueOf("0"));

}
if (PH.getText().toString().length() == 0) {
PH.setText(String.valueOf("0"));

}

kh = Float.valueOf(KH.getText().toString());
ph = Float.valueOf(PH.getText().toString());

co2_ergebnis=Math.floor(kh/2.8*Math.pow(10,7.90-ph));

Feldergebnis_co2.setText(String.valueOf(co2_ergebnis));

}

public void ButtonKlick (View view ){
double kh;
double ph;

double co2_ergebnis;




EditText KH = (EditText)findViewById(R.id.kh_wert);
EditText PH = (EditText)findViewById(R.id.ph_wert);



EditText Feldergebnis_co2 = (EditText)findViewById(R.id.co2_ergebnis);

if (KH.getText().toString().length() == 0) {
KH.setText(String.valueOf("0"));

}
if (PH.getText().toString().length() == 0) {
PH.setText(String.valueOf("0"));

}


kh = Float.valueOf(KH.getText().toString());
ph = Float.valueOf(PH.getText().toString());

co2_ergebnis=Math.floor(kh/2.8*Math.pow(10,7.90-ph));

Feldergebnis_co2.setText(String.valueOf(co2_ergebnis));

}

public void ButtonKlick_green (View view ){
double kh;
double ph;
double co2_ergebnis;

EditText KH = (EditText)findViewById(R.id.kh_wert);
EditText PH = (EditText)findViewById(R.id.ph_wert);

EditText Feldergebnis_co2 = (EditText)findViewById(R.id.co2_ergebnis);

if (KH.getText().toString().length() == 0) {
KH.setText(String.valueOf("0"));

}
if (PH.getText().toString().length() == 0) {
PH.setText(String.valueOf("0"));

}

kh = Float.valueOf(KH.getText().toString());
ph = Float.valueOf(PH.getText().toString());

co2_ergebnis=Math.floor(kh/2.8*Math.pow(10,7.90-ph));

Feldergebnis_co2.setText(String.valueOf(co2_ergebnis));

}



public void setupUI()
{

String commaValue = picka + "." + pickb;
Float value = Float.parseFloat(commaValue);


TextView view = (TextView) findViewById(R.id.ph_wert);

view.setText("7");

TextView view1 = (TextView) findViewById(R.id.ph_wert_a);

view1.setText("1");

TextView view2 = (TextView) findViewById(R.id.phfin);
view2.setText(String.valueOf(value));


khx = (TextView) findViewById(R.id.kh_wert);
picka = (TextView) findViewById(R.id.ph_wert);
pickb = (TextView) findViewById(R.id.ph_wert_a);


NumberPicker kp = (NumberPicker) findViewById(R.id.kh_picker);

NumberPicker px = (NumberPicker) findViewById(R.id.pickera);
NumberPicker py = (NumberPicker) findViewById(R.id.pickerb);

kp.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
px.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
py.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);



kp.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
khx.setText(String.valueOf(newVal));
updateTextField();

}
});

px.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
picka.setText(String.valueOf(newVal));
updateTextField();
}
});

py.setOnValueChangedListener(new OnValueChangeListener()
{
public void onValueChange(NumberPicker picker, int oldVal,
int newVal)
{
pickb.setText(String.valueOf(newVal));
updateTextField();
}
});

kp.setMaxValue(9);
kp.setMinValue(1);
kp.setValue(7);

px.setMaxValue(9);
px.setMinValue(0);
px.setValue(7);

py.setMaxValue(9);
py.setMinValue(0);
py.setValue(7);


}

}

Der ursprüngliche Beitrag von 17:09 Uhr wurde um 18:58 Uhr ergänzt:

soo alle tips von dir getestet,

EditText txtTemp1 = (EditText)findViewById(R.id.ph_wert);
EditText txtTemp2 = (EditText)findViewById(R.id.ph_wert_a);
String commaValue = txtTemp1 + "." + txtTemp2;

TextView view2 = (TextView) findViewById(R.id.phfin);
view2.setText(String.valueOf(commaValue));

ph_wert + ph_wert_a sind ja jeweils die textfelder in denen je 1 zahl steht ,phfin ist das textfeld wo jetzt die beiden werte aus ph_wert + ph_ert_a zusammengefügt als kommazahl stehen müsste,lässt sich ohne probleme starten, nur steht in dem feld phfin :

android.widget.EditText@4308adf0.android.widgetEditText@4308c608..

was ist jetzt wieder nicht Ok...ich denk mal das String.valueOf
view2.setText(String.valueOf(commaValue));
 
Max1809

Max1809

Fortgeschrittenes Mitglied
EditText txtTemp1 = (EditText)findViewById(R.id.ph_wert);
EditText txtTemp2 = (EditText)findViewById(R.id.ph_wert_a);
String commaValue = txtTemp1 + "." + txtTemp2;
In "txtTemp1" und "txtTemp2" sind die Textfelder als Objekt.

So wie du über "SetText" den Text setzt, kannst du über die Methode "GetText()" (also txtTemp1.GetText() ) dir den Text holen. ;)
 
M

Maddi

Ambitioniertes Mitglied
Hallo,
da du dich selbst als Blutigen Anfänger bezeichnest lies dir bitte das hier durch.
Besonders den teil wie man seine Variablen benennen sollte.

Gruß Maddi