Probleme bei kleinem Taschenrechner

J

JoMedics

Neues Mitglied
0
Hallo liebe Community,

ich bin sowohl auf dem Gebiet der Android-Entwicklung als auch in diesem Forum ziemlich neu.
Allerdings besitze ich schon relativ gute Kenntnisse in Java von der Schule her und hab mich privat einigermaßen damit beschäftigt.
Meine IDE ist Android Studio, da ich durch einen Freund drauf gekommen bin und mir die Oberfläche ganz gut gefällt.

Als Einstieg hab ich einen kleinen Login-Versuch gemacht mit Überprüfung ob es > 4 Zeichen lang ist, ob es eine gültige E-Mail ist usw., hat problemlos und ziemlich schnell funktioniert.


Jetzt will ich einen einfachen Taschenrechner als Einstieg programmieren mit Addition, Subtraktion, Multiplikation und Division zweier einzugebenden, was durch 4 Radiobuttons ausgewählt werden soll, um mich mal mit den verschiedenen "Klassen" zu befassen und deren Verhalten zu verstehen.


Von Java auf "PC-Ebene" bin ich folgendes gewohnt (ggf. noch umwandeln):
Code:
int zahl1 = eingabeZahl1.getText();



Nun weiß ich allerdings nicht, wie ich das auf Android umsetzen soll, außerdem kommt auf meinem Handy (S4 gerootet, 4.4.2) sofort die Meldung "Taschenrechner funktioniert nicht mehr!" :confused2:


Hier mal meine MainActivity:

Code:
package lukas.taschenrechner;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;

public class MainActivity extends Activity {


    private Button berechne;
    private int ergebnis;
    private EditText z1;
    private EditText z2;
    private int zahl1;
    private int zahl2;



    TextView erg = (TextView) findViewById(R.id.txtErgebnis);


    Button rechne = (Button) findViewById(R.id.btnBerechnen);
    RadioButton r1 = (RadioButton) findViewById(R.id.radioAdd);
    RadioButton r2 = (RadioButton) findViewById(R.id.radioSub);
    RadioButton r3 = (RadioButton) findViewById(R.id.radioMulti);
    RadioButton r4 = (RadioButton) findViewById(R.id.radioDiv);



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        z1 = (EditText) findViewById(R.id.eingabeZahl1);
        z2 = (EditText) findViewById(R.id.eingabeZahl2);

        zahl1 = Integer.valueOf(z1.getText());
        zahl2 = Integer.valueOf(z2.getText());


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {


        int id = item.getItemId();


        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    
}



    public void onClickButton (View view) {

        if (r1.isActivated()) {
            Addieren(zahl1, zahl2);
        }

        else if (r2.isActivated()) {
            Subtrahieren(zahl1, zahl2);
        }

        else if (r3.isActivated()) {
            Multiplikation(zahl1, zahl2);
        }

        else if (r4.isActivated()) {
            Division(zahl1, zahl2);
        }


    }



    public void Addieren(int zahl1, int zahl2) {

        ergebnis = zahl1 + zahl2;
        erg.setText(ergebnis);

    }

    public void Subtrahieren(int zahl1, int zahl2) {

        ergebnis = zahl1 - zahl2;
        erg.setText(ergebnis);

    }

    public void Multiplikation(int zahl1, int zahl2) {

        ergebnis = zahl1 * zahl2;
        erg.setText(ergebnis);

    }

    public void Division(int zahl1, int zahl2) {

        ergebnis = zahl1 - zahl2;
        erg.setText(ergebnis);

    }

}

(Ja ich weiß, die Methode onClickButton wird noch nicht aufgerufen, darum kümmere ich mich später :biggrin:)


Und meine activity_main.xml:

Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Zahl1:"
        android:id="@+id/textZahl1"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="38dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Zahl2:"
        android:id="@+id/textZahl2"
        android:layout_marginTop="42dp"
        android:layout_below="@+id/textZahl1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="25mm"
        android:layout_height="wrap_content"
        android:id="@+id/eingabeZahl1"
        android:inputType="number"
        android:layout_alignBottom="@+id/textZahl2"
        android:layout_toRightOf="@+id/textZahl2"
        android:layout_toEndOf="@+id/textZahl2"
        android:editable="false" />

    <EditText
        android:inputType="number"
        android:layout_width="25mm"
        android:layout_height="wrap_content"
        android:id="@+id/eingabeZahl2"
        android:layout_above="@+id/textZahl2"
        android:layout_toRightOf="@+id/textZahl1"
        android:layout_alignParentStart="false"
        android:onClick="setContentView"
        android:editable="false" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Addition"
        android:id="@+id/radioAdd"
        android:layout_marginTop="43dp"
        android:checked="false"
        android:layout_below="@+id/eingabeZahl1"
        android:layout_alignRight="@+id/eingabeZahl1"
        android:layout_alignEnd="@+id/eingabeZahl1" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Subtraktion"
        android:id="@+id/radioSub"
        android:checked="false"
        android:layout_below="@+id/radioAdd"
        android:layout_alignLeft="@+id/radioAdd"
        android:layout_alignStart="@+id/radioAdd" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Multiplikation"
        android:id="@+id/radioMulti"
        android:checked="false"
        android:layout_below="@+id/radioSub"
        android:layout_alignLeft="@+id/radioSub"
        android:layout_alignStart="@+id/radioSub" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Division"
        android:id="@+id/radioDiv"
        android:checked="false"
        android:layout_below="@+id/radioMulti"
        android:layout_alignLeft="@+id/radioMulti"
        android:layout_alignStart="@+id/radioMulti" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Berechnen"
        android:id="@+id/btnBerechnen"
        android:layout_below="@+id/radioDiv"
        android:layout_alignRight="@+id/radioMulti"
        android:layout_alignEnd="@+id/radioMulti"
        android:layout_marginTop="29dp"
        android:onClick="setContentView" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Ergebnis"
        android:id="@+id/txtErgebnis"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="45dp" />


</RelativeLayout>


Ich hoffe dass ich hier nicht ein zweites Thema gleichen Problems erstellt hab, falls ja tut es mir leid, aber hab bisher noch nichts derart gefunden und bin auch noch ziemlich neu. :blushing:

Vielen Dank schon mal im Voraus!
 
Hallo erst mal und Herzlich Willkommen unter den Android Programmieren.

Als erstes hast du das Thema leider unter Codeschnipsel erstellt und dies ist nicht ganz korrekt. Es sollter unter App Entwicklung stehen. (Codeschnipsel sind fertige Codes die verwendet werden können. Teilweise sogar fertige Apps die kopiert werden dürfen)

Sollte ein Mod mal verschieben bitte.

Ich habe mir mal den Code angeschaut und da hast du wohl etwas durcheinander gebracht.

Code:
public class MainActivity extends Activity {


    private Button berechne;
    private int ergebnis;
    private EditText z1;
    private EditText z2;
    private int zahl1;
    private int zahl2;



    TextView erg = (TextView) findViewById(R.id.txtErgebnis);


    Button rechne = (Button) findViewById(R.id.btnBerechnen);
    RadioButton r1 = (RadioButton) findViewById(R.id.radioAdd);
    RadioButton r2 = (RadioButton) findViewById(R.id.radioSub);
    RadioButton r3 = (RadioButton) findViewById(R.id.radioMulti);
    RadioButton r4 = (RadioButton) findViewById(R.id.radioDiv);



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        z1 = (EditText) findViewById(R.id.eingabeZahl1);
        z2 = (EditText) findViewById(R.id.eingabeZahl2);

        zahl1 = Integer.valueOf(z1.getText());
        zahl2 = Integer.valueOf(z2.getText());


    }

So oben die erste Variable die du angelegt hast ist zwar quasi richtig, aber oben heißt der Button berechne und weiter unten reche.
Danach weist du schon den Variablen das View zu. Soweit ich weiß (Ich bin auch nur Hobby Programmierer) macht man dies in der OnCreate Mothode.

Das dritte Problem was ich sehe, ist das du den Zahlen zahl1 und zahl2 den Wert aus den Textfeldern direkt beim starten der App zu. Einmal ist es nicht so schlau da die Textfelder eh leer sind und zweitens könnte es ein Problem mit dem Convertieren zum Interger geben, da der Wert bzw ausdruck null nicht konvertiert werden kann.

Die Zahl musst du kurz vor dem berechnen aus den EditViews nehmen.

Bei der Ausgabe des Ergebnis fehlt die Umwandlung von int in String

Falls du nochmal ein Fehler hast bitte die Logcat Ausgabe mit anhängen.

Ich habe mal grob(Frei aus der Hand) den Code geändert. Also nicht getestet oder kompiliert:
Code:
package lukas.taschenrechner;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;

public class MainActivity extends Activity {

    private Button berechne;
    private TextView erg;
    private EditText z1;
    private EditText z2;
    private RadioButton r1;
    private RadioButton r2;
    private RadioButton r3;
    private RadioButton r4;
    private int zahl1;
    private int zahl2;
    private int ergebnis;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        erg = (TextView) findViewById(R.id.txtErgebnis);

        berechne = (Button) findViewById(R.id.btnBerechnen);
        r1 = (RadioButton) findViewById(R.id.radioAdd);
        r2 = (RadioButton) findViewById(R.id.radioSub);
        r3 = (RadioButton) findViewById(R.id.radioMulti);
        r4 = (RadioButton) findViewById(R.id.radioDiv);

        z1 = (EditText) findViewById(R.id.eingabeZahl1);
        z2 = (EditText) findViewById(R.id.eingabeZahl2);


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {


        int id = item.getItemId();


        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
  
}



    public void onClickButton (View view) {

        zahl1 = Integer.valueOf(z1.getText());
        zahl2 = Integer.valueOf(z2.getText());

        if (r1.isActivated()) {
            Addieren(zahl1, zahl2);
        }

        else if (r2.isActivated()) {
            Subtrahieren(zahl1, zahl2);
        }

        else if (r3.isActivated()) {
            Multiplikation(zahl1, zahl2);
        }

        else if (r4.isActivated()) {
            Division(zahl1, zahl2);
        }

    }



    public void Addieren(int zahl1, int zahl2) {

        ergebnis = zahl1 + zahl2;
        erg.setText(Integer.ValueOf(ergebnis));

    }

    public void Subtrahieren(int zahl1, int zahl2) {

        ergebnis = zahl1 - zahl2;
        erg.setText(Integer.ValueOf(ergebnis));

    }

    public void Multiplikation(int zahl1, int zahl2) {

        ergebnis = zahl1 * zahl2;
        erg.setText(Integer.ValueOf(ergebnis));

    }

    public void Division(int zahl1, int zahl2) {

        ergebnis = zahl1 - zahl2;
        erg.setText(Integer.ValueOf(ergebnis));

    }

}


Mit freundlichen Grüßen
Thomas
[doublepost=1446147073,1446146969][/doublepost]Achja Methoden fangen in Java immer mit einem klein Buchstaben an. Dies könntest du noch ändern. Bei weiteren Fragen kannst du mich gerne anschreiben.
 
  • Danke
Reaktionen: JoMedics
Hallo Thomas,

vielen Dank dir schon mal, ich hab da in der Tat so einige dumme Fehler gemacht *Vor den Kopf stoß* :biggrin:
Hoffe ein Mod verschiebt den Beitrag, ist mein erstes Forum ehrlich gesagt und man möge mir daher diesen Fehler verzeihen.


Ich hab den Code mal verbessert, meine Activity sieht derzeit so aus:

Code:
package lukas.taschenrechner;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
public class MainActivity extends Activity {


private RadioButton r1;
private RadioButton r2;
private RadioButton r3;
private RadioButton r4;
private Button btnerg;
private Button btnreset;
private TextView erg;
private EditText z1;
private EditText z2;


double zahl1 = 0;
double zahl2 = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
r1 = (RadioButton) findViewById(R.id.radioAdd);
r2 = (RadioButton) findViewById(R.id.radioSub);
r3 = (RadioButton) findViewById(R.id.radioMulti);
r4 = (RadioButton) findViewById(R.id.radioDiv);
btnerg = (Button) findViewById(R.id.btnBerechnen);
btnreset = (Button) findViewById(R.id.btnReset);
erg = (TextView) findViewById(R.id.txtErgebnis);
btnerg.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {


z1 = (EditText) findViewById(R.id.eingabeZahl1);
zahl1 = Double.parseDouble(z1.getText().toString());
z2 = (EditText) findViewById(R.id.eingabeZahl1);
zahl2 = Double.parseDouble(z2.getText().toString());
if (r1.isChecked()) {
adder(zahl1, zahl2);
} else if (r2.isChecked()) {
subtrahends(zahl1, zahl2);
} else if (r3.isChecked()) {
multiplication(zahl1, zahl2);
} else if (r4.isChecked()) {
division(zahl1, zahl2);
}

}


});
btnreset.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {


r1.setChecked(false);
r2.setChecked(false);
r3.setChecked(false);
r4.setChecked(false);
z1.setText("");
z2.setText("");
erg.setText("Ergebnis");
z1.requestFocus();
}


});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {


int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}



public void adder(double n1, double n2) {

double zahl3 = n1 + n2;
String ergebnis = new Double(zahl3).toString();
erg.setText(ergebnis);
}

public void subtrahends(double n1, double n2) {

double zahl3 = n1 - n2;
String ergebnis = new Double(zahl3).toString();
erg.setText(ergebnis);
}

public void multiplication(double n1, double n2) {

double zahl3 = n1 * n2;
String ergebnis = new Double(zahl3).toString();
erg.setText(ergebnis);
}

public void division(double n1, double n2) {

double zahl3 = n1 / n2;
String ergebnis = new Double(zahl3).toString();
erg.setText(ergebnis);
}

}


Allerdings kommen nie richtige Ergebnisse raus, bei Divsion ist das Ergebnis immer 1.0, 78-53 = 0.0 usw. :confused2::cursing:


Wenn ich auf den Reset-Button klicke, resetted er die RadioButtons wie gewollt, setzt das Ergebnis-Label vom Ergebnis-Wert auf den Text "Ergebnis", Zahl1 wird durch " " geleert sozusagen, Zahl 2 bleibt aber komischerweise trotzdem noch stehen (gestern ging dieser Teil noch einwandfrei?!). Wenn ich dann wieder auf das Eingabefeld für Zahl 1 gehe, stürzt die App ab.


Folgender Logcat-Eintrag ist zu sehen:

Code:
10-29 21:40:21.421 21497-21497/? I/SELinux: Function: selinux_android_load_priority [0], There is no sepolicy file.
10-29 21:40:21.421 21497-21497/? I/SELinux:  
10-29 21:40:21.471 21497-21497/? I/SELinux: Function: selinux_android_load_priority , spota verifySig and checkHash pass. priority version is VE=SEPF_GT-I9505_4.4.2_0046
10-29 21:40:21.471 21497-21497/? I/SELinux:  
10-29 21:40:21.471 21497-21497/? I/SELinux:  
10-29 21:40:21.471 21497-21497/? I/SELinux: selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
10-29 21:40:21.471 21497-21497/? E/dalvikvm: >>>>> Normal User
10-29 21:40:21.471 21497-21497/? E/dalvikvm: >>>>> lukas.taschenrechner [ userId:0 | appId:10227 ]
10-29 21:40:21.471 21497-21497/? D/dalvikvm: Late-enabling CheckJNI
10-29 21:40:21.551 21497-21497/lukas.taschenrechner W/ActivityThread: Application lukas.taschenrechner can be debugged on port 8100...
10-29 21:40:21.571 21497-21497/lukas.taschenrechner W/ApplicationPackageManager: getCSCPackageItemText()
10-29 21:40:21.571 21497-21497/lukas.taschenrechner I/PersonaManager: getPersonaService() name persona_policy
10-29 21:40:21.722 21497-21497/lukas.taschenrechner I/Adreno-EGL: <qeglDrvAPI_eglInitialize:381>: EGL 1.4 QUALCOMM build:  (CL3869936)
10-29 21:40:21.722 21497-21497/lukas.taschenrechner I/Adreno-EGL: OpenGL ES Shader Compiler Version: 17.01.11.SPL
10-29 21:40:21.722 21497-21497/lukas.taschenrechner I/Adreno-EGL: Build Date: 01/17/14 Fri
10-29 21:40:21.722 21497-21497/lukas.taschenrechner I/Adreno-EGL: Local Branch:
10-29 21:40:21.722 21497-21497/lukas.taschenrechner I/Adreno-EGL: Remote Branch:
10-29 21:40:21.722 21497-21497/lukas.taschenrechner I/Adreno-EGL: Local Patches:
10-29 21:40:21.722 21497-21497/lukas.taschenrechner I/Adreno-EGL: Reconstruct Branch:
10-29 21:40:21.762 21497-21497/lukas.taschenrechner D/OpenGLRenderer: Enabling debug mode 0
10-29 21:42:37.534 21497-21497/lukas.taschenrechner D/AndroidRuntime: Shutting down VM
10-29 21:42:37.534 21497-21497/lukas.taschenrechner W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41890da0)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime: FATAL EXCEPTION: main
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime: Process: lukas.taschenrechner, PID: 21497
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime: java.lang.IllegalStateException: Could not execute method of the activity
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View$1.onClick(View.java:3969)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View.performClick(View.java:4633)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View$PerformClick.run(View.java:19330)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Handler.handleCallback(Handler.java:733)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:95)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:157)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5356)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:515)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  Caused by: java.lang.reflect.InvocationTargetException
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:515)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View$1.onClick(View.java:3964)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View.performClick(View.java:4633)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View$PerformClick.run(View.java:19330)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Handler.handleCallback(Handler.java:733)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:95)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:157)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5356)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:515)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.ViewGroup.addViewInner(ViewGroup.java:3759)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.ViewGroup.addView(ViewGroup.java:3612)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.ViewGroup.addView(ViewGroup.java:3588)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:368)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.app.Activity.setContentView(Activity.java:2030)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:515)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View$1.onClick(View.java:3964)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View.performClick(View.java:4633)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.view.View$PerformClick.run(View.java:19330)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Handler.handleCallback(Handler.java:733)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:95)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:157)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5356)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:515)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method)
10-29 21:42:39.246 21497-21497/lukas.taschenrechner I/Process: Sending signal. PID: 21497 SIG: 9



Da fällt mir folgende Zeile sofort ins Auge:

"10-29 21:42:37.544 21497-21497/lukas.taschenrechner E/AndroidRuntime: Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first."

Würde mich jetzt interessieren, wo dieses removeView() hin soll? Bei den bisherigen Fehlermeldungen stand immmer die Zeilennummer dabei. :confused2:



Vielen Dank schonmal
 
Bei der Division ist @123thomas wohl ein Flüchtigkeitsfehler unterlaufen.

Ich würde die Funktionen auch einfach einen String zurückgeben lassen anstatt dort eine bestimmte View zu verändern :) (Division halt prüfen ob durch 0 geteilt wird und dann einen String wie "Division /0" oder so zurückgeben falls dem so sein sollte)
Und Javadocs die sagen welche Zahl bei Subtraktion der Minuend oder Division der Divisor ist oder so.
[doublepost=1446152023,1446151657][/doublepost]PS.: Nenne deine methoden einfach nur add(),mul(),sub() und div()....:D
 
Es fehlt ein OnClickListener(). Im XML im Button (id: btnBerechnen) steht android:onClick="setContentView". Dieser ist nicht im Programmcode definiert, sprich er kann nicht ausgeführt werden. Der Name ist auch sehr unglücklich gewählt, da es eine ähnliche Methode setContentView(int res) in der Activiy gibt.
 
Hallo,
vielen Dank für den Tipp!

Ich weiß nur gerade nicht, was man da genau ändern soll, könntest du mir das vielleicht kurz genauer erklären oder mal kurz aufschreiben?
 
Das steht ebenfalls im Edittext "number" :O

Was dud agegen tun kannst : eine Methode in deiner Activity mit dem Namen "setContentView" (lieber anderen Namen wählen) und der Signatur (View) deklarieren / definieren
 
Vielen Dank erst mal an die ganzen Tipps, Verbesserungen und das Verschieben des Beitrages! :smile:


So, bis auf eine Kleinigkeit läuft jetzt alles.

Hier nochmal die Activity:

Code:
package lukas.taschenrechner;

import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;



public class MainActivity extends ActionBarActivity {


    private RadioButton r1;
    private RadioButton r2;
    private RadioButton r3;
    private RadioButton r4;
    private Button btnerg;
    private Button btnreset;
    private TextView erg;
    private EditText z1;
    private EditText z2;
    private String leer;
    private String leer1;
    private String leer2;

    double zahl1 = 0;
    double zahl2 = 0;



    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




        final AlertDialog.Builder builder = new AlertDialog.Builder(this);


        r1       = (RadioButton) findViewById(R.id.radioAdd);
        r2       = (RadioButton) findViewById(R.id.radioSub);
        r3       = (RadioButton) findViewById(R.id.radioMulti);
        r4       = (RadioButton) findViewById(R.id.radioDiv);
        btnerg   = (Button)      findViewById(R.id.btnBerechnen);
        btnreset = (Button)      findViewById(R.id.btnReset);
        erg      = (TextView)    findViewById(R.id.txtErgebnis);




    btnerg.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View v) {


            z1 = (EditText) findViewById(R.id.eingabeZahl1);
            zahl1 = Double.parseDouble(z1.getText().toString());
            z2 = (EditText) findViewById(R.id.eingabeZahl2);
            zahl2 = Double.parseDouble(z2.getText().toString());
            leer1 = z1.getText().toString();
            leer2 = z2.getText().toString();


            if (zahl2 != 0) {


                if (r1.isChecked()) {
                    add(zahl1, zahl2);
                } else if (r2.isChecked()) {
                    sub(zahl1, zahl2);
                } else if (r3.isChecked()) {
                    mul(zahl1, zahl2);
                } else if (r4.isChecked()) {
                    div(zahl1, zahl2);
                }

            }

                 if (zahl2 == 0 || leer2.matches("")) {

                     Toast.makeText(MainActivity.this, "Zahl darf nicht Null oder Leer sein", Toast.LENGTH_LONG).show();

                     Intent i = new Intent(MainActivity.this, MainActivity.class);
                     startActivity(i);

                  }

        }


    });


        btnreset.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v2) {


                r1.setChecked(false);
                r2.setChecked(false);
                r3.setChecked(false);
                r4.setChecked(false);



                z1.setText("");
                z2.setText("");
                erg.setText("Ergebnis");
                z1.requestFocus();

            }

        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {


        int id = item.getItemId();


        if (id == R.id.action_settings) {

            System.exit(0);
        }

        return super.onOptionsItemSelected(item);
    }



    public void add(double n1, double n2) {

        double zahl3 = n1 + n2;
        String ergebnis = new Double(zahl3).toString();

        erg.setText(ergebnis);

    }

    public void sub(double n1, double n2) {

        double zahl3 = n1 - n2;
        String ergebnis = new Double(zahl3).toString();

        erg.setText(ergebnis);

    }

    public void mul(double n1, double n2) {

        double zahl3 = n1 * n2;
        String ergebnis = new Double(zahl3).toString();

        erg.setText(ergebnis);

    }

    public void div(double n1, double n2) {

        if (n2 != 0) {

            double zahl3 = n1 / n2;
            String ergebnis = new Double(zahl3).toString();

            erg.setText(ergebnis);

        }

        else {
            erg.setText("Nenner darf nicht Null sein!");
         }

    }



}


Einziges Problem:
Wenn ich eine Berechnung mache, resette und dann erneut auf die Eingabe gehe, stürzt die App ab.

Logcat:

Code:
10-30 19:23:33.641 4455-4455/? I/SELinux: Function: selinux_android_load_priority [0], There is no sepolicy file.
10-30 19:23:33.641 4455-4455/? I/SELinux: 
10-30 19:23:33.691 4455-4455/? I/SELinux: Function: selinux_android_load_priority , spota verifySig and checkHash pass. priority version is VE=SEPF_GT-I9505_4.4.2_0046
10-30 19:23:33.691 4455-4455/? I/SELinux: 
10-30 19:23:33.691 4455-4455/? I/SELinux: 
10-30 19:23:33.691 4455-4455/? I/SELinux: selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
10-30 19:23:33.701 4455-4455/? E/dalvikvm: >>>>> Normal User
10-30 19:23:33.701 4455-4455/? E/dalvikvm: >>>>> lukas.taschenrechner [ userId:0 | appId:10227 ]
10-30 19:23:33.701 4455-4455/? D/dalvikvm: Late-enabling CheckJNI
10-30 19:23:33.781 4455-4455/lukas.taschenrechner W/ActivityThread: Application lukas.taschenrechner can be debugged on port 8100...
10-30 19:23:33.801 4455-4455/lukas.taschenrechner W/ApplicationPackageManager: getCSCPackageItemText()
10-30 19:23:33.801 4455-4455/lukas.taschenrechner I/PersonaManager: getPersonaService() name persona_policy
10-30 19:23:33.831 4455-4455/lukas.taschenrechner W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
10-30 19:23:33.831 4455-4455/lukas.taschenrechner I/dalvikvm: Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.internal.view.WindowCallbackWrapper.onSearchRequested
10-30 19:23:33.831 4455-4455/lukas.taschenrechner W/dalvikvm: VFY: unable to resolve interface method 17899: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
10-30 19:23:33.831 4455-4455/lukas.taschenrechner D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
10-30 19:23:33.831 4455-4455/lukas.taschenrechner I/dalvikvm: Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.internal.view.WindowCallbackWrapper.onWindowStartingActionMode
10-30 19:23:33.831 4455-4455/lukas.taschenrechner W/dalvikvm: VFY: unable to resolve interface method 17903: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
10-30 19:23:33.831 4455-4455/lukas.taschenrechner D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
10-30 19:23:33.871 4455-4455/lukas.taschenrechner I/dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations
10-30 19:23:33.871 4455-4455/lukas.taschenrechner W/dalvikvm: VFY: unable to resolve virtual method 423: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
10-30 19:23:33.871 4455-4455/lukas.taschenrechner D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-30 19:23:33.871 4455-4455/lukas.taschenrechner I/dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType
10-30 19:23:33.871 4455-4455/lukas.taschenrechner W/dalvikvm: VFY: unable to resolve virtual method 445: Landroid/content/res/TypedArray;.getType (I)I
10-30 19:23:33.871 4455-4455/lukas.taschenrechner D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-30 19:23:33.911 4455-4455/lukas.taschenrechner I/dalvikvm: Could not find method android.content.res.Resources.getDrawable, referenced from method android.support.v7.internal.widget.ResourcesWrapper.getDrawable
10-30 19:23:33.911 4455-4455/lukas.taschenrechner W/dalvikvm: VFY: unable to resolve virtual method 386: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
10-30 19:23:33.911 4455-4455/lukas.taschenrechner D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-30 19:23:33.911 4455-4455/lukas.taschenrechner I/dalvikvm: Could not find method android.content.res.Resources.getDrawableForDensity, referenced from method android.support.v7.internal.widget.ResourcesWrapper.getDrawableForDensity
10-30 19:23:33.911 4455-4455/lukas.taschenrechner W/dalvikvm: VFY: unable to resolve virtual method 388: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
10-30 19:23:33.911 4455-4455/lukas.taschenrechner D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-30 19:23:34.011 4455-4455/lukas.taschenrechner I/Adreno-EGL: <qeglDrvAPI_eglInitialize:381>: EGL 1.4 QUALCOMM build:  (CL3869936)
10-30 19:23:34.011 4455-4455/lukas.taschenrechner I/Adreno-EGL: OpenGL ES Shader Compiler Version: 17.01.11.SPL
10-30 19:23:34.011 4455-4455/lukas.taschenrechner I/Adreno-EGL: Build Date: 01/17/14 Fri
10-30 19:23:34.011 4455-4455/lukas.taschenrechner I/Adreno-EGL: Local Branch:
10-30 19:23:34.011 4455-4455/lukas.taschenrechner I/Adreno-EGL: Remote Branch:
10-30 19:23:34.011 4455-4455/lukas.taschenrechner I/Adreno-EGL: Local Patches:
10-30 19:23:34.011 4455-4455/lukas.taschenrechner I/Adreno-EGL: Reconstruct Branch:
10-30 19:23:34.061 4455-4455/lukas.taschenrechner D/OpenGLRenderer: Enabling debug mode 0
10-30 19:23:40.227 4455-4455/lukas.taschenrechner W/IInputConnectionWrapper: getExtractedText on inactive InputConnection
10-30 19:23:40.227 4455-4455/lukas.taschenrechner W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
10-30 19:23:40.237 4455-4455/lukas.taschenrechner W/IInputConnectionWrapper: getSelectedText on inactive InputConnection
10-30 19:23:40.237 4455-4455/lukas.taschenrechner W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection
10-30 19:23:40.237 4455-4455/lukas.taschenrechner W/IInputConnectionWrapper: getExtractedText on inactive InputConnection
10-30 19:23:40.237 4455-4455/lukas.taschenrechner W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
10-30 19:23:40.237 4455-4455/lukas.taschenrechner W/IInputConnectionWrapper: getSelectedText on inactive InputConnection
10-30 19:23:40.237 4455-4455/lukas.taschenrechner W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection
10-30 19:23:40.958 4455-4455/lukas.taschenrechner D/AndroidRuntime: Shutting down VM
10-30 19:23:40.958 4455-4455/lukas.taschenrechner W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41f5eda0)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime: FATAL EXCEPTION: main
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime: Process: lukas.taschenrechner, PID: 4455
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime: java.lang.IllegalStateException: Could not execute method for android:onClick
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:278)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.View.performClick(View.java:4633)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:19330)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:157)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5356)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:  Caused by: java.lang.reflect.InvocationTargetException
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.View.performClick(View.java:4633) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:19330) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:157) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5356) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:  Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.ViewGroup.addViewInner(ViewGroup.java:3759)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.ViewGroup.addView(ViewGroup.java:3612)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.ViewGroup.addView(ViewGroup.java:3557)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.ViewGroup.addView(ViewGroup.java:3533)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:248)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:114)
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.View.performClick(View.java:4633) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:19330) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:157) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5356) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
10-30 19:23:40.958 4455-4455/lukas.taschenrechner E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 
10-30 19:28:41.050 4455-4455/lukas.taschenrechner I/Process: Sending signal. PID: 4455 SIG: 9
 
:D "Bis auf Kleinigkeiten läuft alles"
Ein Programmabsturz ist keine Kleinigkeit :)

Filrere mal bitte für die Zukunft deine Logcatausgaben nach "Errors" den ganzen W und I Kram braucht man nicht
 
Ja natürlich, aber ich meine es tut erst mal seinen Zweck und ich hab dadurch verstanden was wo hin kommt, wie sich die Übergabe verhält usw. was mein Hauptziel mit der ersten App war.
Jetzt kommen natürlich die ganzen Exceptions, zusätzliche Funktionen usw., aber das Hauptprogramm steht erst mal soweit. :D

Was ich mich nur Frage, wieso stürzt es ab und natürlich wie man es lösen kann? Die Eingabefelder betragen nach dem den Wert "", also praktisch null (verbessert mich wenn ich da falsch liege, ich arbeite normal nicht damit), und dann stürzt es ab sobald man eine neue Eingabe machen will. Daher wäre mir eine NullPointerException noch plausibel gewesen, aber laut Logcat ist keine solche vorhanden?
 
Du brauchst nicht die Edittexts bei jedem Ergebnis immer wieder neu referenzieren. Einmal in onCreate reicht aus.
Versuche es mal ohne den Focus auf das erste Edittext zu legen beim reseten also weg mit der zeile requestFocus und das obere auch noch versuchen umzusetzen
[doublepost=1446237697,1446237495][/doublepost]
Code:
                     Intent i = new Intent(MainActivity.this, MainActivity.class);
                     startActivity(i);

Warum startest du die Activity neu?

edit: du kriegst ebenfalls Probleme falls einer der Edittext einen leeren String enthält. Dann wird dir eine "NumberFormatException" bei Double.parseDouble("") geschmissen!
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: JoMedics

Ähnliche Themen

S
Antworten
4
Aufrufe
956
Sempervivum
S
D
Antworten
17
Aufrufe
326
datNeMo
D
R
Antworten
3
Aufrufe
1.571
Ritartet
R
Zurück
Oben Unten