Eclipse Emulator zeigt keine Buttons an

  • 30 Antworten
  • Letztes Antwortdatum
Divin93

Divin93

Erfahrenes Mitglied
48
Hallo,
ich habe mich nun auch mal mit dem entwickeln von Apps befasst, bin in Java leider ein Neuling und habe sonst auch nur in C# ein paar Kenntnisse (Schule und so^^), daher wollte ich mit einem recht simplen Taschenrechner anfangen (Addition, Subtraktion, Multiplikation und Division, später soll noch ein Delete Button dazu kommen, aber der Rechner soll erstmal so laufen).
Da ich wie gesagt ein Java Neuling bin habe ich mir ein Tutorial zu Hilfe genommen, welches wie ich befürchte recht alt ist^^ habe aber kein besseres gefunden.
Das Tutorial ist folgendes: Erstellen eines Taschenrechner App für Android | Tutorial

Nun aber zu meinem Problem:
Ich habe den Taschenrechner programmiert und wenn ich den Emulator gestartet habe hat auch immer alles funktioniert, aber auf einmal als ich es nochmal ausprobieren wollte ging es nicht mehr......
Habe nichts verändert.
Im Graphical Layout der activity_main.xml werdensowohl die Textbox als auch alle Buttons die ich programmiert habe angezeigt, nur werden weder beim AVD noch an einem realen Device (beides Nexus 4) die Butoons und die Textbox angezeigt, die App wird zwar installiert und auch gestartet und geöffnete aber zu sehen bekommt man nur den App Namen mit dem Android Symbol daneben, als hätte ich keine Buttons und keine Textbox programmiert.

Habt ihr vielleicht eine Idee woran das liegen kann?
Errors werden keine angezeigt, nur Warnungen, die aber allesamt wegen den hardcoded strings er Button beschriftung..... denke mal nicht das das daran lag, weil es vorher noch ging.
 
setContentView ist auf dein Layout gesetzt?
 
Ja ist es, genu steht dort:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
Und den Text der auf den Buttons angezeigt wird hast du in der XML definiert ?
 
Habe in der XML bei jedem Button folgendes stehen:

android:text="2";

Nur dann halt immer die entsprechene zahl dazu, hat ja vorher auch alles geklappt, nur jetzt auf einmal nicht.
 
kannst du mal die XML datei posten, außerdem den teil deines java codes der was mit den buttons zutun hat?
 
Das mache ich nachher wenn ich zuhause bin, habe jetzt keine Zeit dazu, da ich das Programm auf meinem Laptop habe und nicht auf dem PC an dem ich hier schreibe.
Aber auf jeden Fall schonmal vielen Dank für deine Hilfe!
 
Hier ist der Anfang der XML bis einschließlich des ersten Button, die anderen Buttons unterscheiden sich ja nicht wesentlich..... oder soll ich wirklich die gesamte XML posten?

Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/werteAnzeige"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button0"
        android:layout_width="175dp"
        android:layout_height="80dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:onClick="onClickbutton0"
        android:text="0" />
Hier ist der Java Code:
Code:
public class Taschenrechner extends Activity {
        private EditText werteAnzeige;//Anzeige für eingegebene Werte
        private int zwischenErgebnis; //speichert die Zwischenergebnisse
        private String zahl; //Zwischenspeicher für die eingegebene Zahl
        private boolean letztesADD; //das zuletzt eingegebene Rechenzeichen war ein Plus
        private boolean letztesSUB; //das zuletzt eingegebene Rechenzeichen war ein Minus
        private boolean letztesMULTIPLY; //das zuletzt eingegebene Rechenzeichen war ein Mal
        private boolean letztesDIVIDE; //das zuletzt eingegebene Rechenzeichen war ein Geteiltzeichen
        private boolean letztesRESULT; //das zuletzt eingegebene Rechenzeichen war das Ergebniszeichen
        private final String NULL = "0"; //Konstante zur Anzeige der Zahl 0
        private final String EINS = "1"; //Konstante zur Anzeige der Zahl 1
        private final String ZWEI = "2"; //Konstante zur Anzeige der Zahl 2
        private final String DREI = "3"; //Konstante zur Anzeige der Zahl 3
        private final String VIER = "4"; //Konstante zur Anzeige der Zahl 4
        private final String FÜNF = "5"; //Konstante zur Anzeige der Zahl 5
        private final String SECHS = "6"; //Konstante zur Anzeige der Zahl 6
        private final String SIEBEN = "7"; //Konstante zur Anzeige der Zahl 7
        private final String ACHT = "8"; //Konstante zur Anzeige der Zahl 8
        private final String NEUN = "9"; //Konstante zur Anzeige der Zahl 9
        private final String ADD = "+";//Konstante zur Anzeige des Additionszeichen
        private final String SUB = "-"; //Konstante zur Anzeige des Subtraktionszeichen
        private final String MULTIPLY = "x"; //Konstante zur Anzeige des Malzeichen
        private final String DIVIDE = "/"; //Konstante zur Anzeige des Dividierzeichen
        private final String RESULT = "="; //Konstante zur Anzeige des Ergebniszeichen
        //Called when the activity is first created
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

//Initialisierung der Variablen
            zwischenErgebnis = 0;
            zahl = "";
            letztesADD = false;
            letztesSUB = false;
            letztesMULTIPLY = false;
            letztesDIVIDE = false;
            letztesRESULT = false;
        }
        //diese Funktion wird aufgerufen wenn auf den Button 0 geklickt wird
        public void onClickbutton0(View v) {
            //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
            if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
                letztesRESULT = false; //neue Rechnung beginnt
                werteAnzeige.setText(this.NULL); //Anzeige erhlt den Wert 0
                zahl = this.NULL; //Zwischenspeicher erhält den Wert 0
            }
            else{
                werteAnzeige.append(this.NULL); //der Anzeige wird der Wert 0 hinzugefügt
                zahl = zahl + this.NULL; //de Zwischenspeicher wird der Wert 0 hinzugefügt
            }
      }
Die weiteren Button sind halt genauso aufgebaut wie das Beispiel mit der "0" hier.

Hoffe das hilft, kenne mich damit noch nicht allzu gut aus, wie gesagt hatte auch ein TTutorial zur Hilfe, verstehe aber wieso da was geschrieben wurde^^
 
Punkt 1:
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
Das steht in deinem RelativeLayout. Was steht in dimen?

Punkt2:
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
Das steht in deinem EditText. Warum? Das ergibt keinen Sinn. Du sagst hierbei, dass das EditText (welches sowieso die ganze breite berfüllt) ganz nach Links UND ganz nach Rechts gepackt werden soll. Das geht nicht :) Entscheide dich für eins.

Punkt 3:
android:onClick="onClickbutton0"
Du schreibst das bei jedem Button? Wird eher unübersichtlich, meiner Meinung nach. Dass hast du tausende Methoden.
Implemtiere dir lieber einen ClickListener und prüfe dann welche Zahl geklickt worden ist. Ist wirklich gescghmackssache, denke aber das wäre füpr einsteiger einfacher...

Ansonsten ist es wirklich besser, wenn du die komplette XML postet. Denn bis hier ist alles "richtig".

Gruß

P.s: Achja, weil du schreibst vorher "lief alles". Probier mal mit Clean. Unter Eclipse oben auf "Project" dann auf Clean ...
 
zu 1. in dimen steht folgendes:
Code:
public static final class dimen {
        /**  Default screen margins, per the Android Design guidelines. 
         Customize dimensions originally defined in res/values/dimens.xml (such as
         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
 
         */
        public static final int activity_horizontal_margin=0x7f040000;
        public static final int activity_vertical_margin=0x7f040001;
    }

Das wurde dort automatisch reingeschrieben als ich das neue Projekt erstellt habe.

zu 2.
Ja das macht Sinn, habe das fill_parent erst eingefügt nachdem ich die Textbox von ganz links nach ganz rechts gezogen habe im Graphical Layout, habe ich wohl übersehen^^

zu 3.
Ich habe es schonmal mit dem ClickListener probiert, das habe ich allerdings nicht wirklich hinbekommen..... deswegen habe ich wieder überall onClick eingefügt.

Clean hat leider auch nicht funktioniert....

hier die XML:
Code:
<RelativeLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]"
    xmlns:tools="[URL]http://schemas.android.com/tools[/URL]"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <EditText
        android:id="@+id/werteAnzeige"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:inputType="number" >
        <requestFocus />
    </EditText>
    <Button
        android:id="@+id/button0"
        android:layout_width="175dp"
        android:layout_height="80dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:onClick="onClickbutton0"
        android:text="0" />
    <Button
        android:id="@+id/button1"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_above="@+id/button0"
        android:layout_alignLeft="@+id/button0"
        android:layout_marginBottom="15dp"
        android:onClick="onClickbutton1"
        android:text="1" />
    <Button
        android:id="@+id/button2"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignTop="@+id/button1"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/button1"
        android:onClick="onClickbutton2"
        android:text="2" />
    <Button
        android:id="@+id/button3"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignBottom="@+id/button2"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/button2"
        android:onClick="onClickbutton3"
        android:text="3" />
    <Button
        android:id="@+id/button4"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_above="@+id/button1"
        android:layout_marginBottom="15dp"
        android:layout_toLeftOf="@+id/button2"
        android:onClick="onClickbutton4"
        android:text="4" />
    <Button
        android:id="@+id/button5"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignBottom="@+id/button4"
        android:layout_alignLeft="@+id/button2"
        android:onClick="onClickbutton5"
        android:text="5" />
    <Button
        android:id="@+id/button6"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignLeft="@+id/button3"
        android:layout_alignTop="@+id/button5"
        android:onClick="onClickbutton6"
        android:text="6" />
    <Button
        android:id="@+id/button7"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_above="@+id/button4"
        android:layout_alignLeft="@+id/button4"
        android:layout_marginBottom="15dp"
        android:onClick="onClickbutton7"
        android:text="7" />
    <Button
        android:id="@+id/button8"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignBottom="@+id/button7"
        android:layout_alignLeft="@+id/button5"
        android:onClick="onClickbutton8"
        android:text="8" />
    <Button
        android:id="@+id/button9"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignBottom="@+id/button8"
        android:layout_alignLeft="@+id/button6"
        android:onClick="onClickbutton9"
        android:text="9" />
    <Button
        android:id="@+id/buttonAdd"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignLeft="@+id/buttonMultiply"
        android:layout_below="@+id/button1"
        android:onClick="onClickbuttonadd"
        android:text="+" />
    <Button

und hier weil ich gerade dabei bin auch mal den kompleten Java Code:
Code:
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public class Taschenrechner extends Activity {
     private EditText werteAnzeige;//Anzeige für eingegebene Werte
     private double zwischenErgebnis; //speichert die Zwischenergebnisse
     private String zahl; //Zwischenspeicher für die eingegebene Zahl
     private boolean letztesADD; //das zuletzt eingegebene Rechenzeichen war ein Plus
     private boolean letztesSUB; //das zuletzt eingegebene Rechenzeichen war ein Minus
     private boolean letztesMULTIPLY; //das zuletzt eingegebene Rechenzeichen war ein Mal
     private boolean letztesDIVIDE; //das zuletzt eingegebene Rechenzeichen war ein Geteiltzeichen
     private boolean letztesRESULT; //das zuletzt eingegebene Rechenzeichen war das Ergebniszeichen
     private final String NULL = "0"; //Konstante zur Anzeige der Zahl 0
     private final String EINS = "1"; //Konstante zur Anzeige der Zahl 1
     private final String ZWEI = "2"; //Konstante zur Anzeige der Zahl 2
     private final String DREI = "3"; //Konstante zur Anzeige der Zahl 3
     private final String VIER = "4"; //Konstante zur Anzeige der Zahl 4
     private final String FÜNF = "5"; //Konstante zur Anzeige der Zahl 5
     private final String SECHS = "6"; //Konstante zur Anzeige der Zahl 6
     private final String SIEBEN = "7"; //Konstante zur Anzeige der Zahl 7
     private final String ACHT = "8"; //Konstante zur Anzeige der Zahl 8
     private final String NEUN = "9"; //Konstante zur Anzeige der Zahl 9
     private final String ADD = "+";//Konstante zur Anzeige des Additionszeichen
     private final String SUB = "-"; //Konstante zur Anzeige des Subtraktionszeichen
     private final String MULTIPLY = "x"; //Konstante zur Anzeige des Malzeichen
     private final String DIVIDE = "/"; //Konstante zur Anzeige des Dividierzeichen
     private final String RESULT = "="; //Konstante zur Anzeige des Ergebniszeichen
     //Called when the activity is first created
     @Override
     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      //Initialisierung der Variablen
      zwischenErgebnis = 0;
      zahl = "";
      letztesADD = false;
      letztesSUB = false;
      letztesMULTIPLY = false;
      letztesDIVIDE = false;
      letztesRESULT = false;
     }
     //diese Funktion wird aufgerufen wenn auf den Button 0 geklickt wird
        public void onClickbutton0(View v) {
      //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.NULL); //Anzeige erhlt den Wert 0
          zahl = this.NULL; //Zwischenspeicher erhält den Wert 0
         }
         else{
          werteAnzeige.append(this.NULL); //der Anzeige wird der Wert 0 hinzugefügt
          zahl = zahl + this.NULL; //de Zwischenspeicher wird der Wert 0 hinzugefügt
         }
      }
     //diese Funktion wird aufgerufen wenn auf den Button 1 geklickt wird
        public void onClickbutton1(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.EINS); //Anzeige erhlt den Wert 1
          zahl = this.EINS; //Zwischenspeicher erhält den Wert 1
         }
         else{
          werteAnzeige.append(this.EINS); //der Anzeige wird der Wert 1 hinzugefügt
          zahl = zahl + this.EINS; //de Zwischenspeicher wird der Wert 1 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Button 2 geklickt wird
        public void onClickbutton2(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.ZWEI); //Anzeige erhlt den Wert 2
          zahl = this.ZWEI; //Zwischenspeicher erhält den Wert 2
         }
         else{
          werteAnzeige.append(this.ZWEI); //der Anzeige wird der Wert 1 hinzugefügt
          zahl = zahl + this.ZWEI; //de Zwischenspeicher wird der Wert 1 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Button 3 geklickt wird
        public void onClickbutton3(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.DREI); //Anzeige erhlt den Wert 1
          zahl = this.DREI; //Zwischenspeicher erhält den Wert 1
         }
         else{
          werteAnzeige.append(this.DREI); //der Anzeige wird der Wert 3 hinzugefügt
          zahl = zahl + this.DREI; //de Zwischenspeicher wird der Wert 3 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Button 4 geklickt wird
        public void onClickbutton4(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.VIER); //Anzeige erhlt den Wert 4
          zahl = this.VIER; //Zwischenspeicher erhält den Wert 4
         }
         else{
          werteAnzeige.append(this.VIER); //der Anzeige wird der Wert 4 hinzugefügt
          zahl = zahl + this.VIER; //de Zwischenspeicher wird der Wert 4 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Button 5 geklickt wird
        public void onClickbutton5(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.FÜNF); //Anzeige erhlt den Wert 5
          zahl = this.FÜNF; //Zwischenspeicher erhält den Wert 5
         }
         else{
          werteAnzeige.append(this.FÜNF); //der Anzeige wird der Wert 5 hinzugefügt
          zahl = zahl + this.FÜNF; //de Zwischenspeicher wird der Wert 5 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Button 6 geklickt wird
        public void onClickbutton6(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.SECHS); //Anzeige erhlt den Wert 6
          zahl = this.SECHS; //Zwischenspeicher erhält den Wert 6
         }
         else{
          werteAnzeige.append(this.SECHS); //der Anzeige wird der Wert 6 hinzugefügt
          zahl = zahl + this.SECHS; //de Zwischenspeicher wird der Wert 6 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Button 7 geklickt wird
        public void onClickbutton7(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.SIEBEN); //Anzeige erhlt den Wert 7
          zahl = this.SIEBEN; //Zwischenspeicher erhält den Wert 7
         }
         else{
          werteAnzeige.append(this.SIEBEN); //der Anzeige wird der Wert 7 hinzugefügt
          zahl = zahl + this.SIEBEN; //de Zwischenspeicher wird der Wert 7 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Button 8 geklickt wird
        public void onClickbutton8(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.ACHT); //Anzeige erhlt den Wert 8
          zahl = this.ACHT; //Zwischenspeicher erhält den Wert 8
         }
         else{
          werteAnzeige.append(this.ACHT); //der Anzeige wird der Wert 8 hinzugefügt
          zahl = zahl + this.ACHT; //de Zwischenspeicher wird der Wert 8 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Button 9 geklickt wird
        public void onClickbutton9(View v) {
         //falls entweder in der Anzeige eine Null steht oder eine alte Rechnung abgeschlossen wurde
         if(werteAnzeige.getText().toString().equals(NULL) || letztesRESULT) {
          letztesRESULT = false; //neue Rechnung beginnt
          werteAnzeige.setText(this.NEUN); //Anzeige erhlt den Wert 9
          zahl = this.NEUN; //Zwischenspeicher erhält den Wert 9
         }
         else{
          werteAnzeige.append(this.NEUN); //der Anzeige wird der Wert 9 hinzugefügt
          zahl = zahl + this.NEUN; //de Zwischenspeicher wird der Wert 9 hinzugefügt
         }
     }
     //diese Funktion wird aufgerufen wenn auf den Additionsbutton geklickt wird
     public void onClickbuttonadd(View v) {
      if (!zahl.equals("")) { //nur wenn eine Zahl eingegeben wurde erfolgt eine Rechnung
       if(zwischenErgebnis == 0) { //die letzte Rechnung wird in dieser Fallunterscheidung abgeschlossen
        zwischenErgebnis = Double.parseDouble(zahl); // damit das Zwischenergebnis nicht negativ wird
       }
       else if (letztesSUB) {
        zwischenErgebnis = zwischenErgebnis - Double.parseDouble(zahl); //vom Zwischenergebnis wird die Zahl abgezogen, die vor dem Rechenzeichen eingegeben wurde
        letztesSUB = false;
       }
       else if (letztesMULTIPLY) {
        zwischenErgebnis = zwischenErgebnis * Double.parseDouble(zahl); //das Zwischenergebnis wird mit der Zahl multipliziert, die vor dem Rechenzeichen eingegeben wurde
        letztesMULTIPLY = false;
       }
       else if (letztesDIVIDE) {
        zwischenErgebnis = zwischenErgebnis / Double.parseDouble(zahl); //das Zwischenergebnis wird durch die Zahl dividiert, die vor dem Rechenzeichen eingegeben wurde
        letztesDIVIDE = false;
       }
       else{
        zwischenErgebnis = zwischenErgebnis + Double.parseDouble(zahl); // dem Zwischenergebnis wird die Zahl hinzuaddiert, die vor dem Rechenzeichen eingegeben wurde
       }
       werteAnzeige.append(ADD); //der Anzeige wird ein Pluszeichen hinzugefügt
       letztesADD = true; // die letzte Rechnung ist eine Addition
       zahl = ""; //der Zwischenspeicher wird "geleert"
      }
     }
     //diese Funktion wird aufgerufen wenn auf den Subtraktionssbutton geklickt wird
     public void onClickbuttonsub(View v) {
      if (!zahl.equals("")) { //nur wenn eine Zahl eingegeben wurde erfolgt eine Rechnung
       if(zwischenErgebnis == 0) { //die letzte Rechnung wird in dieser Fallunterscheidung abgeschlossen
        zwischenErgebnis = Double.parseDouble(zahl); // damit das Zwischenergebnis nicht negativ wird
       }
       else if (letztesADD) {
        zwischenErgebnis = zwischenErgebnis + Double.parseDouble(zahl); //dem Zwischenergebnis wird die Zahl hinzuaddiert, die vor dem Rechenzeichen eingegeben wurde
        letztesADD = false;
       }
       else if (letztesMULTIPLY) {
        zwischenErgebnis = zwischenErgebnis * Double.parseDouble(zahl); //das Zwischenergebnis wird mit der Zahl multipliziert, die vor dem Rechenzeichen eingegeben wurde
        letztesMULTIPLY = false;
       }
       else if (letztesDIVIDE) {
        zwischenErgebnis = zwischenErgebnis / Double.parseDouble(zahl); //das Zwischenergebnis wird durch die Zahl dividiert, die vor dem Rechenzeichen eingegeben wurde
        letztesDIVIDE = false;
       }
       else{
        zwischenErgebnis = zwischenErgebnis - Double.parseDouble(zahl); //vom Zwischenergebnis wird die Zahl abgezogen, die vor dem Rechenzeichen eingegeben wurde
       }
       werteAnzeige.append(SUB); //der Anzeige wird ein Minuszeichen hinzugefügt
       letztesSUB = true; // die letzte Rechnung ist eine Subtraktion
       zahl = ""; //der Zwischenspeicher wird "geleert"
      }
     }
     //diese Funktion wird aufgerufen wenn auf den Multiplikationsbutton geklickt wird
     public void onClickbuttonmultiply(View v) {
      if (!zahl.equals("")) { //nur wenn eine Zahl eingegeben wurde erfolgt eine Rechnung
       if(zwischenErgebnis == 0) { //die letzte Rechnung wird in dieser Fallunterscheidung abgeschlossen
        zwischenErgebnis = Double.parseDouble(zahl); // damit das Zwischenergebnis nicht negativ wird
       }
       else if (letztesADD) {
        zwischenErgebnis = zwischenErgebnis + Double.parseDouble(zahl); //dem Zwischenergebnis wird die Zahl hinzuaddiert, die vor dem Rechenzeichen eingegeben wurde
        letztesADD = false;
       }
       else if (letztesSUB) {
        zwischenErgebnis = zwischenErgebnis - Double.parseDouble(zahl); //vom Zwischenergebnis wird die Zahl abgezogen, die vor dem Rechenzeichen eingegeben wurde
        letztesSUB = false;
       }
       else if (letztesDIVIDE) {
        zwischenErgebnis = zwischenErgebnis / Double.parseDouble(zahl); //das Zwischenergebnis wird durch die Zahl dividiert, die vor dem Rechenzeichen eingegeben wurde
        letztesDIVIDE = false;
       }
       else{
        zwischenErgebnis = zwischenErgebnis * Double.parseDouble(zahl); //das Zwischenergebnis wird mit der Zahl multipliziert, die vor dem Rechenzeichen eingegeben wurde
       }
       werteAnzeige.append(MULTIPLY); //der Anzeige wird ein Malzeichen hinzugefügt
       letztesMULTIPLY = true; // die letzte Rechnung ist eine Multiplikation
       zahl = ""; //der Zwischenspeicher wird "geleert"
      }
     }
     //diese Funktion wird aufgerufen wenn auf den Dividierbutton geklickt wird
     public void onClickbuttondivide(View v) {
      if (!zahl.equals("")) { //nur wenn eine Zahl eingegeben wurde erfolgt eine Rechnung
       if(zwischenErgebnis == 0) { //die letzte Rechnung wird in dieser Fallunterscheidung abgeschlossen
        zwischenErgebnis = Double.parseDouble(zahl); // damit das Zwischenergebnis nicht negativ wird
       }
       else if (letztesADD) {
        zwischenErgebnis = zwischenErgebnis + Double.parseDouble(zahl); //dem Zwischenergebnis wird die Zahl hinzuaddiert, die vor dem Rechenzeichen eingegeben wurde
        letztesADD = false;
       }
       else if (letztesSUB) {
        zwischenErgebnis = zwischenErgebnis - Double.parseDouble(zahl); //vom Zwischenergebnis wird die Zahl abgezogen, die vor dem Rechenzeichen eingegeben wurde
        letztesSUB = false;
       }
       else if (letztesMULTIPLY) {
        zwischenErgebnis = zwischenErgebnis * Double.parseDouble(zahl); //das Zwischenergebnis wird mit der Zahl multipliziert, die vor dem Rechenzeichen eingegeben wurde
        letztesMULTIPLY = false;
       }
       else{
        zwischenErgebnis = zwischenErgebnis / Double.parseDouble(zahl); //das Zwischenergebnis wird durch die Zahl dividiert, die vor dem Rechenzeichen eingegeben wurde
       }
       werteAnzeige.append(DIVIDE); //der Anzeige wird ein Geteilt hinzugefügt
       letztesDIVIDE = true; // die letzte Rechnung ist eine Division
       zahl = ""; //der Zwischenspeicher wird "geleert"
      }
     }
     //diese Funktion wird aufgerufen wenn auf den Ergebnisbutton geklickt wird
     public void onClickbuttonResult(View v) {
      if (!zahl.equals("")) { //nur wenn eine Zahl eingegeben wurde erfolg eine Rechnung
       if (letztesADD) {
        zwischenErgebnis = zwischenErgebnis + Double.parseDouble(zahl); //dem Zwischenergebnis wird die Zahl hinzuaddiert, die vor dem Rechenzeichen eingegeben wurde
        letztesADD = false; // weil Addition als letzte Rechnung abgearbeitet
        werteAnzeige.append(RESULT + zwischenErgebnis); //Anzeige wird das Gleichheitszeichen und Ergebnis hinzugefügt
       }
       else if (letztesSUB) {
        zwischenErgebnis = zwischenErgebnis - Double.parseDouble(zahl); //vom Zwischenergebnis wird die Zahl abgezogen, die vor dem Rechenzeichen eingegeben wurde
        letztesSUB = false; // weil Subtraktion als letzte Rechnung abgearbeitet
        werteAnzeige.append(RESULT + zwischenErgebnis); //Anzeige wird das Gleichheitszeichen und Ergebnis hinzugefügt
       }
       else if (letztesMULTIPLY) {
        zwischenErgebnis = zwischenErgebnis * Double.parseDouble(zahl); //das Zwischenergebnis wird mit der Zahl multipliziert, die vor dem Rechenzeichen eingegeben wurde
        letztesMULTIPLY = false; // weil Multiplikation als letzte Rechnung abgearbeitet
        werteAnzeige.append(RESULT + zwischenErgebnis); //Anzeige wird das Gleichheitszeichen und Ergebnis hinzugefügt
       }
       else if (letztesDIVIDE) {
        zwischenErgebnis = zwischenErgebnis / Double.parseDouble(zahl); //das Zwischenergebnis wird durch die Zahl dividiert, die vor dem Rechenzeichen eingegeben wurde
        letztesDIVIDE = false; // weil Addition als letzte Rechnung abgearbeitet
        werteAnzeige.append(RESULT + zwischenErgebnis); //Anzeige wird das Gleichheitszeichen und Ergebnis hinzugefügt
       }
       zahl = ""; //der Zwischenspeicher wird "geleert"
       zwischenErgebnis = 0; // das Zwischenergebnis wird "geleert"
       letztesRESULT = true; // Rechnung ist abgeschlossen
      }
     }
    }
}

Dir auch schonmal vielen Dank für die Hilfe :)

Ich bin mir nicht sicher ob es wirklich an der XML oder dem Java Code liegt, weil im Graphical Layout der XML ja alles korrekt dargestellt wird, nur im Emulator und aufm meinem N4 nicht.....
Aber woran soll das sonst liegen^^

Ich schaue mal wie ich das mit dem ClickListener hinbekommen könnte :)
 
Hmm sieht eigentlich ganz gut alles aus, so beim drüber schauen.
Deinstallier mal die App komplett auf der ADV und auf dem Handy und installier sie nochmal komplett neu...

Ansonsten würde ich mal im Java-Code alles auskommentieren, aus die onCreate().
Kannst du mit:
/*
*/
machen...

Falls das auch nicht hilft, dann erstelle mal eine neue XML. Dort schreibst du rein:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/werteAnzeige"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:inputType="number" />
<Button
android:id="@+id/button0"
android:layout_width="175dp"
android:layout_height="80dp"
android:onClick="onClickbutton0"
android:text="0" />
</LinearLayout>
dann sagst du im onCreate bei setContentView:
setContentView(R.layout.deinneuestelltesXML);

Und sagst, ob es dann etwas anzeigt..

Gruß
 
nur das erstellen einer neuen XML funzt, werde jetzt in ein neues Projekt alles Schritt für Schritt einfügen um zu gucken wo der Fehler liegen muss.
Poste dann hier obs was bringt und wenn nicht wo der Fehler liegen muss :)

Der ursprüngliche Beitrag von 13:07 Uhr wurde um 14:13 Uhr ergänzt:

Nun gut, ich habe jetzt ein neues Projekt erstellt und diesmal wird alles korrekt dargestellt (Y)
Allerdings stürzt die App immer ab wenn ich auf einen Button klicke.....
Habe aber echt keine Ahnung wieso...
wäre nett wenn da nochmal einer drüber schaun könnte :)
Die Button fürs löschen und Komma setzen können eh erstmal vernachlässigt werden, wollte die hinzufügen sobald der rest läuft.

Also hier ist die XML:
Code:
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]"
    xmlns:tools="[URL]http://schemas.android.com/tools[/URL]"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <EditText
        android:id="@+id/werteAnzeige"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number" >
        <requestFocus />
    </EditText>
    <Button
        android:id="@+id/buttonDelete"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="onClickbuttondelete"
        android:text="@string/ButtonDelete" />
        
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton7"
        android:text="@string/Button7" />
        <Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton8"
        android:text="@string/Button8" />
        <Button
        android:id="@+id/button9"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton9"
        android:text="@string/Button9" />
        <Button
        android:id="@+id/buttonDivide"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttondivide"
        android:text="@string/ButtonDivide" />
    </LinearLayout>
        
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton4"
        android:text="@string/Button4" />
        <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton5"
        android:text="@string/Button5" />
        <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton6"
        android:text="@string/Button6" />
        <Button
        android:id="@+id/buttonMultiply"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttonmultiply"
        android:text="@string/ButtonMultiply" />
    </LinearLayout>
        
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton1"
        android:text="@string/Button1" />
        <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton2"
        android:text="@string/Button2" />
        <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton3"
        android:text="@string/Button3" />
        <Button
        android:id="@+id/buttonSub"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttonsub"
        android:text="@string/ButtonSub" />
    </LinearLayout>
    
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <Button
        android:id="@+id/button0"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton0"
        android:text="@string/Button0" />
        <Button
        android:id="@+id/buttonDot"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttondot"
        android:text="@string/ButtonDot" />
        <Button
        android:id="@+id/buttonResult"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttonresult"
        android:text="@string/ButtonResult" />
        <Button
        android:id="@+id/buttonAdd"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttonadd"
        android:text="@string/ButtonAdd" />
    </LinearLayout>
</LinearLayout>
(Habe die ein bisschen umgestellt^^)

Und hier ist der Java Code:
Code:
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]"
    xmlns:tools="[URL]http://schemas.android.com/tools[/URL]"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <EditText
        android:id="@+id/werteAnzeige"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number" >
        <requestFocus />
    </EditText>
    <Button
        android:id="@+id/buttonDelete"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="onClickbuttondelete"
        android:text="@string/ButtonDelete" />
        
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton7"
        android:text="@string/Button7" />
        <Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton8"
        android:text="@string/Button8" />
        <Button
        android:id="@+id/button9"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton9"
        android:text="@string/Button9" />
        <Button
        android:id="@+id/buttonDivide"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttondivide"
        android:text="@string/ButtonDivide" />
    </LinearLayout>
        
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton4"
        android:text="@string/Button4" />
        <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton5"
        android:text="@string/Button5" />
        <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton6"
        android:text="@string/Button6" />
        <Button
        android:id="@+id/buttonMultiply"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttonmultiply"
        android:text="@string/ButtonMultiply" />
    </LinearLayout>
        
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton1"
        android:text="@string/Button1" />
        <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton2"
        android:text="@string/Button2" />
        <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton3"
        android:text="@string/Button3" />
        <Button
        android:id="@+id/buttonSub"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttonsub"
        android:text="@string/ButtonSub" />
    </LinearLayout>
    
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <Button
        android:id="@+id/button0"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbutton0"
        android:text="@string/Button0" />
        <Button
        android:id="@+id/buttonDot"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttondot"
        android:text="@string/ButtonDot" />
        <Button
        android:id="@+id/buttonResult"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttonresult"
        android:text="@string/ButtonResult" />
        <Button
        android:id="@+id/buttonAdd"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickbuttonadd"
        android:text="@string/ButtonAdd" />
    </LinearLayout>
</LinearLayout>

Es kommt mir so vor als wären die Button nicht mit der dazugehörigen Funktion verknüpft, aber was stimmt mit dem onClick nicht?
Werde in der Zwischenzeit auch mal schauen wie das mit dem onClickListener ist, habe das immer noch nicht auf die Reihe bekommen^^
 
Logcat...
 
LogCat sagt nichts, aber nachdem ich nochmal ein neues Projekt erstellt habe, weil er das Layout wieder nicht angezeigt hat, bzw. diesmal ncht richtig bekomme ich in der Konsole immer folgende Meldung:

[2013-05-24 17:34:14 - Taschenrechner] W/ResourceType( 4084): Bad XML block: header size 121 or total size 0 is larger than data size 0
[2013-05-24 17:34:14 - Taschenrechner] C:\Users\Marcel\Desktop\Java\Projects\Taschenrechner\res\menu\main.xml:3: error: Error: No resource found that matches the given name (at 'title' with value '@string/action_settings').

Habe schon nen string namens action_settings hinzugefügt aber hat nichts geholfen.
Weißt du was zu tun ist?
 
Wenn du den Pfad wirklich kopiert hast, da ist ein Leerzeichen in Taschenrechner ;P
Zu dem Bad XML block, cleane doch einfach mal dein Projekt, ansonsten mal hier schauen.

PS: sry das ich gestern nicht antworten konnte, matheklausur hat vorrang :)
 
War zwar kopiert aber das Leerzeichen ist in Eclipse trotzdem net drinne :D

Hilft aber leider alles nichts....
immernoch dieselben Meldungen.....
Ich glaube ich mache das alles nohmal komplett von Anfang an und dann am besten mit nem onClickListener, wenn mir einer von euch kurz erklären könnte wie man das macht? Mit den ganzen Erklärungen aus Google komme ich nicht klar :/

Und kein Ding, natürlich geht sowas vor! :)
 
ja, eclipse hat manchmal echt seltsame störungen^^

also das mit dem clicklistener ist richtig einfach, bei id gibst du natürlich die ein die du für den button in der xml definiert hast.

Code:
 Button b_external = (Button) findViewById(R.id.b_external);    
            b_external.setOnClickListener(new View.OnClickListener(){

                public void onClick(View v) {

                   //Tu was
                    
                }
            });
 
Also zuerst alle VBButton einzeln als ClickListener und der Anweisungsblock der onClick Methode zählt dann für jeden button? Erkennt der dann automatisch welcher Button geklickt wurde?
 
ne sry, für jeden einzelnen button jeweils den codeblock
 
Achso okay alles klar, dann vielen Dank euch beiden :)
Wenn ich morgen zeit habe oder gleich noch Lust dazu, fange ich nochmal komplett von vorne an^^
 
Zurück
Oben Unten