Absturz der App bei leeren Edittext

Diskutiere Absturz der App bei leeren Edittext im Mobile Geräte Forum; Hallo zusammen, brauche mal wieder Hilfe :/ Und zwar stürzt meine App ab wenn ein Feld leer ist, wegen NullPointerException. Ich habe es mit...

  1. brilzi89
    brilzi89 Mitglied
    Hallo zusammen,
    brauche mal wieder Hilfe :/

    Und zwar stürzt meine App ab wenn ein Feld leer ist, wegen NullPointerException.

    Ich habe es mit einer if anweisung versucht aber hilft nichts.Kann mir einer sagen was ich falsch gemacht habe.

    Code (Java):
    public class Ladungssicherung extends AppCompatActivity implements AdapterView.OnItemSelectedListener {



        private EditText gewichtinput;
        private EditText winkelinput;
        private String text;
        private double k = 1.5;
        private int cZ = 1; // beschleunigungsbeiwert nach unten
        private double cX = 0.8; // beschleunigungsbeiwert nach vorne


        Dialog epicDialog;
        TextView unicode, ergebnissFeld;
        ImageView muinfoButton, closemuButton, infoalphaButton;

        @SuppressLint("StringFormatInvalid")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.activity_ladungssicherung);

            winkelinput = (EditText)findViewById(R.id.winkelInput);
            ergebnissFeld= (TextView)findViewById(R.id.ergebniss);
            gewichtinput = (EditText)findViewById(R.id.gewichtInput);


            SharedPreferences sharedPreferences = getSharedPreferences("sharedPrefs", MODE_PRIVATE);
            text = sharedPreferences.getString("text", "");
            winkelinput.setText(text);
            sharedPreferences.edit().remove("text").commit();

        epicDialog = new Dialog(this, android.R.style.Theme_DeviceDefault_Light_NoActionBar_Fullscreen);


            muinfoButton = (ImageView) findViewById(R.id.infomuIcon);
            closemuButton = (ImageView)findViewById(R.id.closemuinfo);
            infoalphaButton = (ImageView)findViewById(R.id.infoalpha);

            muinfoButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showmuinfo();


                }
            });

            infoalphaButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showalphawinkel();
                }
            });


            //Spinner code
            Spinner spinner = findViewById(R.id.spinner1);
            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.numbers, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
            spinner.setOnItemSelectedListener(this);



        }

        public void showalphawinkel(){

           Intent intent = new Intent(this, WinkelmessActivity.class);
           startActivity(intent);


        }




        public void showmuinfo(){

            epicDialog.setContentView(R.layout.muinfo);
            closemuButton = (ImageView) epicDialog.findViewById(R.id.closemuinfo);

            closemuButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    epicDialog.dismiss();
                }
            });

            epicDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            epicDialog.show();
        }





            @Override
            public void onItemSelected (AdapterView < ? > parent, View view,int position, long id){

        }

            @Override
            public void onNothingSelected (AdapterView < ? > parent){

        }

            public void ergebnissFromel(View v){

            EditText feld1 = (EditText) findViewById(R.id.gewichtInput);
            EditText feld2 = (EditText) findViewById(R.id.winkelInput);
            EditText feld3 = (EditText) findViewById(R.id.stfInput);
            Spinner feld4 = (Spinner) findViewById(R.id.spinner1);

            Integer zahl1 = Integer.parseInt(feld1.getText().toString());
            Integer zahl2 = Integer.parseInt(feld2.getText().toString());
            Integer zahl3 = Integer.parseInt(feld3.getText().toString());

            String spinner = feld4.getSelectedItem().toString();

            if(feld1.equals("") ){
                Toast.makeText(this, "Bitte geben Sie den Winkel an", Toast.LENGTH_SHORT).show();

            }
                if(feld2.equals("")){
                    Toast.makeText(this, "Bitte geben Sie das Gewicht an", Toast.LENGTH_SHORT).show();

                }

                if(feld3.equals("")){
                    Toast.makeText(this, "Bitte geben Sie den STF an", Toast.LENGTH_SHORT).show();

                }



    // Grad wird in sinus alpha umgerechnet
            double newsinus = Math.sin(Math.toRadians(Float.valueOf(zahl2)));

            double wert1 = cX-Float.valueOf(spinner)*cZ;
            double wert2 = Float.valueOf(spinner)*newsinus;

    // Formel Niederzurren Algorithmus
            double wert3 = wert1*zahl1;
            double wert4 = wert2*k;
            double wert5 = wert3/wert4;
            double wert6 = Math.round(wert5);
            double wert7 = wert6/zahl3;
            double wert8 = Math.ceil(wert7);

            ergebnissFeld.setText(String.valueOf(Math.round(wert8)));


            }

            }

     
     
  2. Wenn du jetzt Java lernen möchtest, dann sichere dir hier unseren Java-Videokurs heute zum Sonderpreis (hier klicken!)
  3. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    Aktuell benutzt du erst den Wert des Feldes, und prüfst danach, ob es leer war.

    Du solltest vor der Benutzung prüfen, und das nicht nur auf leer, sondern auch auf null.
     
  4. brilzi89
    brilzi89 Mitglied
    ok danke ich schau mal :)
     
  5. brilzi89
    brilzi89 Mitglied
    bekomme immer das von Logcat:
    12-14 18:28:28.130 5760-5760/com.example.michi.trucki E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.michi.trucki, PID: 5760
    java.lang.IllegalStateException: Could not execute method for android:eek:nClick
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
    at android.view.View.performClick(View.java:5675)
    at android.view.View$PerformClick.run(View.java:22641)
    at android.os.Handler.handleCallback(Handler.java:836)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loop(Looper.java:203)
    at android.app.ActivityThread.main(ActivityThread.java:6251)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
    Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
    at android.view.View.performClick(View.java:5675)
    at android.view.View$PerformClick.run(View.java:22641)
    at android.os.Handler.handleCallback(Handler.java:836)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loop(Looper.java:203)
    at android.app.ActivityThread.main(ActivityThread.java:6251)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
    Caused by: java.lang.NumberFormatException: For input string: ""
    at java.lang.Integer.parseInt(Integer.java:533)
    at java.lang.Integer.parseInt(Integer.java:556)
    at com.example.michi.trucki.Ladungssicherung.ergebnissFromel(Ladungssicherung.java:140)
    at java.lang.reflect.Method.invoke(Native Method)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
    at android.view.View.performClick(View.java:5675)
    at android.view.View$PerformClick.run(View.java:22641)
    at android.os.Handler.handleCallback(Handler.java:836)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loop(Looper.java:203)
    at android.app.ActivityThread.main(ActivityThread.java:6251)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

    wäre das so richtig mit meinem code?
    Code (Java):

            public void ergebnissFromel(View v){
                Spinner feld4 = (Spinner) findViewById(R.id.spinner1);

                Integer zahl1 = Integer.parseInt(gewichtinput.getText().toString());
                Integer zahl2 = Integer.parseInt(winkelinput.getText().toString());
                Integer zahl3 = Integer.parseInt(stfinput.getText().toString());

                String spinner = feld4.getSelectedItem().toString();


            if ( zahl1.equals("") || zahl1 == null){
                Toast.makeText(this, "Bitte geben Sie das Gewicht an", Toast.LENGTH_SHORT).show();

                }
                if ( zahl2.equals("") || zahl2 == null){
                    Toast.makeText(this, "Bitte geben Sie das Gewicht an", Toast.LENGTH_SHORT).show();

                }

                if ( zahl3.equals("") || zahl3 == null){
                    Toast.makeText(this, "Bitte geben Sie das Gewicht an", Toast.LENGTH_SHORT).show();

                }
    else {

    // Grad wird in sinus alpha umgerechnet
                double newsinus = Math.sin(Math.toRadians(Float.valueOf(zahl2)));

                double wert1 = cX - Float.valueOf(spinner) * cZ;
                double wert2 = Float.valueOf(spinner) * newsinus;

    // Formel Niederzurren Algorithmus
                double wert3 = wert1 * zahl1;
                double wert4 = wert2 * k;
                double wert5 = wert3 / wert4;
                double wert6 = Math.round(wert5);
                double wert7 = wert6 / zahl3;
                double wert8 = Math.ceil(wert7);

                ergebnissFeld.setText(String.valueOf(Math.round(wert8)));

            }
            }

            }

     
     
  6. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    Für welches if greift denn dein else? ;)
     
  7. brilzi89
    brilzi89 Mitglied
    habs jetzt so gemacht:
    Code (Java):

            Spinner feld4 = (Spinner) findViewById(R.id.spinner1);

            Integer zahl1 = 0;
            Integer zahl2 = 0;
            Integer zahl3 = 0;

            try {
                zahl1 = Integer.parseInt(gewichtinput.getText().toString());
                zahl2 = Integer.parseInt(winkelinput.getText().toString());
                zahl3 = Integer.parseInt(stfinput.getText().toString());

            } catch (Exception e) {
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
                return;
            }

            String spinner = feld4.getSelectedItem().toString();



                // Grad wird in sinus alpha umgerechnet
                double newsinus = Math.sin(Math.toRadians(Float.valueOf(zahl2)));

                double wert1 = cX - Float.valueOf(spinner) * cZ;
                double wert2 = Float.valueOf(spinner) * newsinus;

                // Formel Niederzurren Algorithmus
                double wert3 = wert1 * zahl1;
                double wert4 = wert2 * k;
                double wert5 = wert3 / wert4;
                double wert6 = Math.round(wert5);
                double wert7 = wert6 / zahl3;
                double wert8 = Math.ceil(wert7);

                ergebnissFeld.setText(String.valueOf(Math.round(wert8)));

            }
        }
     
     
  8. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    Mit if-else solltest du es trotzdem lösen können, dass sind absolute Grundlagen...
     
  9. mihe7
    mihe7 Bekanntes Mitglied
    Das ist keine Lösung: vorher hättest Du (zwar falsche aber immerhin) benutzerfreundliche Fehlermeldungen ausgegeben.

    Ein wenig Struktur würde Deinem Code ebenso wenig schaden wie halbwegs vernünftige Variablennamen. zahl1, zahl2, zahl3, wert1, wert2 -> WTF?!?
     
  10. brilzi89
    brilzi89 Mitglied
    ich persönlich komme mit den Namen ganz gut klar, und habe ne gute übersicht.
     
  11. brilzi89
    brilzi89 Mitglied
    v
    versuche es jetzt mal mit try catch
     
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Absturz der App bei leeren Edittext - Ähnliche Themen

Appabsturz mit Datenbank
Appabsturz mit Datenbank im Forum Datenbankprogrammierung
Absturz bei Aufruf von onClickListener()
Absturz bei Aufruf von onClickListener() im Forum Mobile Geräte
Android Studio lässt PC abstürzen
Android Studio lässt PC abstürzen im Forum Mobile Geräte
Android App Absturz beim Starten
Android App Absturz beim Starten im Forum Spiele- und Multimedia-Programmierung
onClick führt zu Absturz
onClick führt zu Absturz im Forum Mobile Geräte
Thema: Absturz der App bei leeren Edittext