Android App mit Eclipse

  • 28 Antworten
  • Letztes Antwortdatum
Y

Yingrjimsch

Neues Mitglied
0
Hallo zusammen

Ich bin daran ein App zu entwickeln und bin recht neu bei der Android- Programmierung.
Ich komme nicht weiter und wollte fragen ob mir jemand helfen kann der dies schon länger macht.

1. Problem: Ich will auf der 1. Seite ein Rechner programmieren, bei dem man eine Zahl eingibt und dann auf den Button (Los) drückt. Wenn man auf den Button gedrückt hat sollte man zur nächsten Seite gelangen und dort sollte eine 2. Zahl stehen. Ich will die erste Zahl mit einer anderen Zahl (diese Zahl sollte nirgends sichtbar sein) multiplizieren und das Resultat erhalten.

2. Problem: Wenn ich eine 2. Seite erstelle kann ich die versch. Texte etc. nicht mehr frei herumschieben und darum kann ich keine Texte auf dieselbe Höhe stellen warum?

Kann mir jemand helfen? Ich wäre sehr froh über jegliche Form von hilfe.

Danke im Vorraus

Yingrjimsch
 
Es würde helfen, wenn du vorallem um ersten Problem genauer sagst WAS du davon nicht hinbekommst.

Aktuell beschreibst du nur was du hinterher haben willst aber nicht was du schon gemacht hast und wo genau du nun hängst.

Was genau meinst du eigentlich mit 2. Seite?
 
OK
public void FajitasgoClick (View view) {
int fajitaszahl1;
int fajitasergebnis;
int zahl2 = 5;
EditText Feld2 = (EditText)findViewById(R.id.zahl2);
EditText FajitasFeld1 = (EditText)findViewById(R.id.fajitaszahl1);
EditText fajitasergebnis1 = (EditText)findViewById(R.id.zutatfajitas1);
if (FajitasFeld1.getText().toString().length() == 0) {
return;
}
fajitaszahl1 = Integer.parseInt(FajitasFeld1.getText().toString());
zahl2 = Integer.parseInt(Feld2.getText().toString());
fajitasergebnis = fajitaszahl1 * zahl2;

fajitasergebnis1.setText(String.valueOf(fajitasergebnis));
setContentView(R.layout.zutatenfajitas);
}

Dies war das Programm das ich geschrieben habe um es auf die reihe zu kriegen, doch als ich es ausprobierte kam ein Error und der Fehler liegt anscheinend bei "zahl2" und dem multiplizieren (lass dich vom Fajitas nicht irritieren es sollte eine Kochapp werden....)

Mit 2. Seite meine ich, wenn ich ein neues Layout zum Projekt hinzufüge.

Ich hoffe es ist alles verständlich :smile:
 
In eclipse oder Androidstudio wird eine Fehlermeldung bei "Logcat" angezeigt.

Wenn du die genaue Fehlermeldung einfügst kann man dir besser helfen.

Hier im Forum kann man Code mit BBCode Tags einfügen damit wird das ganze leserlicher.

Code:
public void FajitasgoClick (View view) {
int fajitaszahl1;
int fajitasergebnis;
int zahl2 = 5;
EditText Feld2 = (EditText)findViewById(R.id.zahl2);
EditText FajitasFeld1 = (EditText)findViewById(R.id.fajitaszahl1);
EditText fajitasergebnis1 = (EditText)findViewById(R.id.zutatfajitas1);
if (FajitasFeld1.getText().toString().length() == 0) {
return;
}
fajitaszahl1 = Integer.parseInt(FajitasFeld1.getText().toString() );
zahl2 = Integer.parseInt(Feld2.getText().toString());
fajitasergebnis = fajitaszahl1 * zahl2;

fajitasergebnis1.setText(String.valueOf(fajitaserg ebnis));
setContentView(R.layout.zutatenfajitas);
}
 
Genau welcher Error kam genau.
Bist du sicher das alle EditViews die du mit getViewById holst auch im aktuellen layout vorhanden sind und nicht z.B. erst hier R.layout.zutatenfajitas drin sind?

Dann dürftest du nämlich irgendwo eine NullPointerException bekommen.
Welches Layout lädst du denn vorher und sind dort wirklich alle Textfelder vorhande?

Ansonsten ist das ohne den Fehler nicht zu sagen was da falsch läuft.
 
Der EditText fajitasergebnis1 ist in einem anderen Layout vorhanden und dort soll das Ergebnis der zahl2 und der fajitaszahl1 kommen.
Kann ich die Zeile:

EditText FajitasFeld1 = (EditText)findViewById(R.id.fajitaszahl1);

Einfach löschen Da die zahl2 schon einen Wert hat und in keinem EditText vorhanden ist?
Und kann ich das nicht irgendwie so lösen, dass das fajitaergebnis1 trotzdem auf einem neuen layout erscheint?

Die Fehlermeldung schicke ich dir sobald ich wieder an meinem Computer sitze bin grade weg....

LG Yingrjimsch
:smile:
 
Zuletzt bearbeitet:
falls fajitasergebnis1 in dem layout zutatenfajitas ist..
dann kannst du das relativ einfach beheben.
erst
setContentView(R.layout.zutatenfajitas);
und dann erst:
EditText fajitasergebnis1 = (EditText)findViewById(R.id.zutatfajitas1);
fajitasergebnis1.setText(String.valueOf(fajitaserg ebnis));


findViewById findet nämlich NUR aktuelle geladene Views.
Wenn die also in einem anderen Layout sind findest du die erst wenn dieses layout auch geladen ist.
Zur besseren visualisierung, stell dir vor, das setContentView nur den XML Inhalt deines layouts anzeigt und auf diesem Text dann nach der ID sucht.
Erst wenn du dann mit setContentView das layout änderst (auf das andere XML) dann wird diese View dort auch gefunden.
 
Hi
Danke vielmals es hat geklapppt !!!!!!:smile::smile::smile::smile::smile::smile::smile:

Kannst du mir noch bei etwasem Helfen?

Ich will den EditText in den das Ergebnis kommt so programmieren dass man nichts mehr reinschreiben kann.
Wie kann ich dies machen?

Und wie kann ich machen dass ich auch Kommazahlen reinschreiben kann?

LG Yingrjimsch
 
Zuletzt bearbeitet:
Statt EditText einfach eine TextView nehmen wäre das einfachste.
Komma zahlen funktionieren wenn du nicht mit Integer und int rechnest sonder mit float oder double.
 
Ich habe alles geschaft. Danke

Wenn ich jetzt auf der Seite zutatenfajitas einen neuen Button einfüge und das gleiche noch einmal wiederholen will (mit der gleichen zahl1 aus dem 1. Layout) habe ich diesen Code eingegeben:

public void fajitass2Click (View view) {
setContentView(R.layout.anzpersfajitas);
double zahl1;
double e8;
double e9;
double e10;
double e11;
double zahl9 = 500;
double zahl10 = 1;
double zahl11 = 8;
double zahl12 = 1;
EditText FajitasFeld1 = (EditText)findViewById(R.id.et1);
setContentView(R.layout.zutatenfajitas2);
TextView ergebnis8 = (TextView)findViewById(R.id.fe8);
TextView ergebnis9 = (TextView)findViewById(R.id.fe9);
TextView ergebnis10 = (TextView)findViewById(R.id.fe10);
TextView ergebnis11 = (TextView)findViewById(R.id.fe11);
if (FajitasFeld1.getText().toString().length() == 0) {
return;
}
zahl1 = Integer.parseInt(FajitasFeld1.getText().toString());
e8 = zahl1 * (zahl9 / 4);
e9 = zahl1 * (zahl10 / 4);
e10 = zahl1 * (zahl11 / 4);
e11 = zahl1 * (zahl12 / 4);
ergebnis8.setText(String.valueOf(e8));
ergebnis9.setText(String.valueOf(e9));
ergebnis10.setText(String.valueOf(e10));
ergebnis11.setText(String.valueOf(e11));

}


Doch es passiert nichts. Die TextViews bleiben einfach leer und ich bekomme auch keine Fehlermeldung...

Kannst du mir weiterhelfen?

LG Yingrjimsch
 
Zuletzt bearbeitet:
Vermutlich geht er in dein if und macht return;
damit bist du dann raus, hast keinen Fehler und nix passiert.

EditText FajitasFeld1 = (EditText)findViewById(R.id.et1);
setContentView(R.layout.zutatenfajitas2);
[...]
zahl1 = Integer.parseInt(FajitasFeld1.getText().toString() );

Das wird nicht funktionieren denk ich es kann sein das FajitasFeld1 gar nicht mehr exisitert weil du es mit setContentView wegmachst.
Wenn überhaupt musst du das Feld vorher auslesen.
 
Und was wenn ich auf dem 2. Layout ein TextView erstelle, in das die Zahl hinein "gerechnet" wurde?
Ich hab es versucht und es ging auch nicht. Ich denke weil der android:text immer noch "Medium Name" ist. Kann ich den Text auch irgendwie variabel ersetzen?

LG Yingrjimsch
 
Ich versteh ehrlich gesagt gerade nicht was du meinst ^^

Ich weiß auch nicht wie dein layout aussieht. aber wenn ich das richtig verstanden hab willst du ja quasi anzeigen wie viel Zutaten man für ein bestimmtes Rezept bei einer eingegebenen Personenzahl braucht.

Deshalb versteh ich nicht mal ganz warum du so viele Layouts hast.
Ich würde ein layout nehmen die Views dort variable einfügen je nach Anzahl der Zutaten, ganz oben ein Eingabefeld für die Anzahl der Personen und dann halt einfach alles immer so anzeigen wie ich es brauche.
 
Es ist eben so, dass das eine Layout nicht genug gross für alle Zutaten ist.
Darum bin ich gezwungen ein weiteres Layout zu nehmen um alle Zutaten auflisten zu können.
Sonst fällt mir nichts besseres auf wie ich es machen kann, da ich auch nicht weis ob man Scrollen kann und wie man das kann.
 
Sorry aber ich blicke noch immer nicht ganz durch wie man den scrollView programmiert. Also ich habe ihn ins layout gezogen aber wie kann ich jetzt nach unten gehen um das Layout weiterzuführen und wie programmiere ich den ScrollView so das er auch herunter scrollt?
 
da brauchste gar nix zu programmieren eigentlich.
Scrollview rein und da dann das was du bisher hast rein..
DIe Scrollview einfach um deine bisherige View drum rum legen sollte reichen
 
Und dann kann ich im Layout auch Scrollen und die TextViews schön anrichten?

LG Yingrjimsch:smile:
 
Lies mal die Doku zur Scrollview da steht das meisten ein LinearLayout innerhalb der Scrollview benutzt wird.
Darin kannst du dann alles so anordnen als hättest du ein unendlich langes Display.

Vereinfacht als xml dargestellt
<scrollview>
<linearlayout>
<textView id=1>
...
<textView id=X>
</linearlayout>
</scrollLayout>
 
Ahaaa dann kann ich eine eigene LinearLayout machen, und die dann in die ScrollView involvieren?
 

Ähnliche Themen

K
Antworten
3
Aufrufe
975
mezzothunder
mezzothunder
M
Antworten
21
Aufrufe
1.360
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
966
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
1.006
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
790
mkuz24
M
Zurück
Oben Unten