2017-04-03 1 views
0

Ich bin neu in Android-Entwicklung und ich mache eine einfache Taschenrechner-App ... Immer wenn ich den Code im Android Emulator laufen lasse, zeigt es mir leider, SimpleApp hat gestoppt .... Ich Android Studio ist mit dem Code schreiben Bitte helfen Sie mir ... Folgende ist mein Code ....Leider ist Simple App gestoppt

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.myapp.simpleapp.MainActivity"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="337dp" 
     android:layout_height="58dp" 
     android:contextClickable="false" 
     android:cursorVisible="false" 
     android:fontFamily="serif" 
     android:longClickable="true" 
     android:text="Calculator" 
     android:textAlignment="center" 
     android:textAllCaps="true" 
     android:textColor="@android:color/holo_red_dark" 
     android:textSize="36sp" 
     android:visibility="visible" 
     tools:layout_editor_absoluteX="24dp" 
     tools:layout_editor_absoluteY="31dp" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="194dp" 
     android:layout_height="43dp" 
     android:text="Number 1: " 
     android:textColor="@android:color/black" 
     android:textSize="25sp" 
     tools:layout_editor_absoluteX="24dp" 
     tools:layout_editor_absoluteY="140dp" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="194dp" 
     android:layout_height="44dp" 
     android:text="Number 2: " 
     android:textColor="@android:color/black" 
     android:textSize="25sp" 
     tools:layout_editor_absoluteX="24dp" 
     tools:layout_editor_absoluteY="217dp" /> 

    <EditText 
     android:id="@+id/number2" 
     android:layout_width="99dp" 
     android:layout_height="43dp" 
     android:ems="10" 
     android:hint="Number 2" 
     android:inputType="number|numberSigned|numberDecimal" 
     android:singleLine="true" 
     android:textAlignment="center" 
     android:textColor="@android:color/black" 
     android:textIsSelectable="true" 
     android:textSize="20sp" 
     tools:layout_editor_absoluteX="262dp" 
     tools:layout_editor_absoluteY="217dp" /> 

    <EditText 
     android:id="@+id/number1" 
     android:layout_width="99dp" 
     android:layout_height="43dp" 
     android:ems="10" 
     android:hint="Number 1" 
     android:inputType="number|numberSigned|numberDecimal" 
     android:linksClickable="false" 
     android:longClickable="true" 
     android:textAlignment="center" 
     android:textColor="@android:color/black" 
     android:textSize="20sp" 
     tools:layout_editor_absoluteX="262dp" 
     tools:layout_editor_absoluteY="140dp" /> 

    <TextView 
     android:id="@+id/result" 
     android:layout_width="175dp" 
     android:layout_height="40dp" 
     tools:layout_editor_absoluteX="176dp" 
     tools:layout_editor_absoluteY="430dp" /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="103dp" 
     android:layout_height="40dp" 
     android:text="Result: " 
     android:textColor="@android:color/black" 
     android:textSize="25sp" 
     tools:layout_editor_absoluteX="59dp" 
     tools:layout_editor_absoluteY="433dp" /> 

    <Button 
     android:id="@+id/btnAdd" 
     android:layout_width="152dp" 
     android:layout_height="49dp" 
     android:text="+" 
     android:textColor="@android:color/black" 
     android:textSize="30sp" 
     tools:layout_editor_absoluteX="24dp" 
     tools:layout_editor_absoluteY="292dp" /> 

    <Button 
     android:id="@+id/btnSub" 
     android:layout_width="152dp" 
     android:layout_height="49dp" 
     android:text="-" 
     android:textColor="@android:color/black" 
     android:textIsSelectable="false" 
     android:textSize="30sp" 
     tools:layout_editor_absoluteX="216dp" 
     tools:layout_editor_absoluteY="292dp" /> 

    <Button 
     android:id="@+id/btnDiv" 
     android:layout_width="152dp" 
     android:layout_height="49dp" 
     android:text="/" 
     android:textColor="@android:color/black" 
     android:textSize="25sp" 
     tools:layout_editor_absoluteX="24dp" 
     tools:layout_editor_absoluteY="362dp" /> 

    <Button 
     android:id="@+id/btnMul" 
     android:layout_width="152dp" 
     android:layout_height="49dp" 
     android:text="*" 
     android:textAlignment="center" 
     android:textColor="@android:color/black" 
     android:textSize="25sp" 
     tools:layout_editor_absoluteX="216dp" 
     tools:layout_editor_absoluteY="362dp" /> 
</android.support.constraint.ConstraintLayout> 

MainActivity.java

package com.myapp.simpleapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

    EditText number1= (EditText) findViewById(R.id.number1); 
    EditText number2= (EditText) findViewById(R.id.number2); 

    Button add= (Button) findViewById(R.id.btnAdd); 
    Button sub= (Button) findViewById(R.id.btnSub); 
    Button div= (Button) findViewById(R.id.btnDiv); 
    Button mul= (Button) findViewById(R.id.btnMul); 


    TextView txtresult= (TextView) findViewById(R.id.result); 

    double num1,num2,result; 

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

     num1=Double.parseDouble(number1.getText().toString()); 
     num2=Double.parseDouble(number2.getText().toString()); 

     add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       result=num1+num2; 

       txtresult.setText(Double.toString(result)); 
      } 
     }); 

     sub.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       result=num1-num2; 

       txtresult.setText(Double.toString(result)); 
      } 
     }); 

     div.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       result=num1/num2; 

       txtresult.setText(Double.toString(result)); 
      } 
     }); 

     mul.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       result=num1*num2; 

       txtresult.setText(Double.toString(result)); 
      } 
     }); 

    } 
} 

LogCat

04-03 12:25:38.913 3927-3927/? E/memtrack: Couldn't load memtrack module (No such file or directory) 
04-03 12:25:38.913 3927-3927/? E/android.os.Debug: failed to load memtrack module: -2 
04-03 12:25:39.372 3952-3952/? E/memtrack: Couldn't load memtrack module (No such file or directory) 
04-03 12:25:39.373 3952-3952/? E/android.os.Debug: failed to load memtrack module: -2 
04-03 12:25:49.078 4097-4097/? E/memtrack: Couldn't load memtrack module (No such file or directory) 
04-03 12:25:49.078 4097-4097/? E/android.os.Debug: failed to load memtrack module: -2 
04-03 12:25:49.647 4122-4122/? E/memtrack: Couldn't load memtrack module (No such file or directory) 
04-03 12:25:49.648 4122-4122/? E/android.os.Debug: failed to load memtrack module: -2 
04-03 12:25:58.059 3666-3666/com.myapp.simpleapp E/AndroidRuntime: FATAL EXCEPTION: main 
                    Process: com.myapp.simpleapp, PID: 3666 
                    java.lang.NumberFormatException: Invalid double: "" 
                     at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
                     at java.lang.StringToReal.parseDouble(StringToReal.java:267) 
                     at java.lang.Double.parseDouble(Double.java:301) 
                     at com.myapp.simpleapp.MainActivity$4.onClick(MainActivity.java:70) 
                     at android.view.View.performClick(View.java:4780) 
                     at android.view.View$PerformClick.run(View.java:19866) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:135) 
                     at android.app.ActivityThread.main(ActivityThread.java:5254) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:372) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
04-03 12:25:58.079 1163-1163/? E/EGL_emulation: tid 1163: eglCreateSyncKHR(1299): error 0x3004 (EGL_BAD_ATTRIBUTE) 
04-03 12:26:02.452 1810-2202/system_process E/InputDispatcher: channel '21dd8534 com.myapp.simpleapp/com.myapp.simpleapp.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 
04-03 12:26:02.581 1175-1175/? E/audio_hw_generic: Error opening input stream format 1, channel_mask 0010, sample_rate 16000 
+1

Verwenden Sie keine statische Initialisierung für Ihre Ansicht. Dow 'findViewById' innerhalb' onCreate' wie alle Beispiele –

+0

Ich versuchte aber das gleiche Ergebnis .... – Samrat

+0

@Samrat bitte posten Sie Ihre Logcat Nachrichten – Nabil

Antwort

0

Verwenden findViewById innerhalb onCreate und verwenden Double.parse erst nach Werte in den edittexts eingetragen.

Versuchen Sie diesen Code:

public class MainActivity extends Activity { 

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

     final EditText number1 = (EditText) findViewById(R.id.number1); 
     final EditText number2 = (EditText) findViewById(R.id.number2); 

     Button add = (Button) findViewById(R.id.btnAdd); 
     Button sub = (Button) findViewById(R.id.btnSub); 
     Button div = (Button) findViewById(R.id.btnDiv); 
     Button mul = (Button) findViewById(R.id.btnMul); 

     final TextView txtresult = (TextView) findViewById(R.id.result); 

     add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       double num1, num2, result; 

       num1 = Double.parseDouble(number1.getText().toString()); 
       num2 = Double.parseDouble(number2.getText().toString()); 

       result = num1 + num2; 

       txtresult.setText(Double.toString(result)); 
      } 
     }); 

     sub.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       double num1, num2, result; 

       num1 = Double.parseDouble(number1.getText().toString()); 
       num2 = Double.parseDouble(number2.getText().toString()); 

       result = num1 - num2; 

       txtresult.setText(Double.toString(result)); 
      } 
     }); 

     div.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       double num1, num2, result; 

       num1 = Double.parseDouble(number1.getText().toString()); 
       num2 = Double.parseDouble(number2.getText().toString()); 

       result = num1/num2; 

       txtresult.setText(Double.toString(result)); 
      } 
     }); 

     mul.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       double num1, num2, result; 

       num1 = Double.parseDouble(number1.getText().toString()); 
       num2 = Double.parseDouble(number2.getText().toString()); 

       result = num1 * num2; 

       txtresult.setText(Double.toString(result)); 
      } 
     }); 

    } 
} 
+0

Ich tat, aber nichts passierte – Samrat

0

Die häufigste Ursache für dieses Problem eine Nullpointer zur Laufzeit ist.

Schritte folgen:

Beachten Sie die Stack-Trace auf Android Studio wie unten dargestellt: enter image description here

Anschließend können Sie die Stapelüberwachung analysieren und Null auf, was genau verursacht die Ausnahme und die Zeile, die es verursacht hat. Alternativ können Sie den Screenshot Ihres Stack-Trace posten, damit Sie die Frage leichter beantworten können.