2017-04-03 61 views
0

我是新來的android開發和即時通訊製作一個簡單的計算器應用程序...每當我在android模擬器運行的代碼它顯示我不幸的是,SimpleApp已停止....我「M使用Android Studio中編寫代碼,請幫我... 以下是我的代碼....不幸的是,簡單的應用程序被停止

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

不要對您的視圖使用靜態初始化。在'onCreate'裏面執行'findViewById'就像所有的例子一樣 –

+0

我試過了但是結果相同... – Samrat

+0

@Samrat請發佈你的logcat消息 – Nabil

回答

0

使用findViewById裏面的onCreate和使用Double.parse值已在edittexts被輸入之後。

試試這個代碼:

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

我做了但沒有發生任何事情 – Samrat

0

這個問題的最常見的原因是在運行時NullPointerException異常

遵循的步驟:

觀察在Android Studio中的堆棧跟蹤,如下圖所示:enter image description here

便可以分析堆棧跟蹤,以及究竟是什麼造成零的異常和導致它的線。或者,您可以發佈堆棧跟蹤的屏幕截圖,以便回答問題。

相關問題