2014-08-29 58 views
0

我是新來的android開發,這只是我的第二個應用程序,我只是爲了消磨時間,但我無法理解,是什麼導致了這個錯誤。需要專家的建議Android:不幸的是<app name>已停止

的activity_starting_point.xml:

<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" 
    tools:context=".StatingPoint" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="35dp" 
     android:text="Enter Number 1" 
      android:id="@+id/tvDisplay" 
      /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:inputType="number" > 

     <requestFocus /> 
    </EditText> 

    <TextView 

     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="35dp" 
     android:text="Enter Number 2" 
      android:id="@+id/tvDisplay" 
     /> 

    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:inputType="number" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="250dp" 
     android:layout_height="wrap_content" 
     android:text="Add" 
     android:layout_gravity="center" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="250dp" 
     android:layout_height="wrap_content" 
     android:text="Subtract" 
     android:layout_gravity="center" /> 

     <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" Your Total is 0 " 
     android:textSize="45dp" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:id="@+id/tvDisplay" /> 

</LinearLayout> 

的Java類文件:StartingPoint.java 包com.ankur.calulator;

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


public class StatingPoint extends Activity { 


    int num1,num2; 
    int total; 
    Button add,sub; 
    TextView display; 
    EditText no1,no2; 



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

     total=0; 
     no1=(EditText) findViewById(R.id.editText1); 
     no2=(EditText) findViewById(R.id.editText2); 
     display=(TextView)findViewById(R.id.tvDisplay); 

     add.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 

       total=num1+num2; 
       display.setText("Your Total is "+total); 

      } 
     }); 

     sub.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 

       total=num1-num2; 
       display.setText("Your Total is "+total); 

      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_stating_point, menu); 
     return true; 
    } 

} 

的logcat的文件: 其有空白,我想我搞砸了它,但我看到的東西像Java空指針異常 之前我KNW我很接近,只是NT能夠找到一些缺少鏈接,需要諮詢。

回答

1

您還沒有初始化addsub像你這樣no1no1display

而你試圖調用setOnClickListeneraddsub離不開初始化,所以你得到了NullPointerException

您需要提供不同的idaddsub並初始化它。

0

在你activity_starting_point.xml,您有:

  • 3 TextViews用相同的ID:tvDisplay
  • 2按鈕使用相同的ID:Button1的

請指定唯一的,有意義的ID以便能夠稍後在您的java代碼中引用它們,例如:

android:id="@+id/btAdd" 

android:id="@+id/btSubtract" 

(注:你其實並不需要ID與指令,例如TextViews。所有那些tvDisplay,除非你想用Java實際引用它們,例如改變指令文本)

接下來,正如Apoorv發現的,你初始化你的no1和no2,你不會用add和子,因此它們是空的。只是初始化他們以同樣的方式方法同上:

add = (Button) findViewById(R.id.btAdd); 

sub = (Button) findViewById(R.id.btSubtract); 

而且,在你的OnClickListeners,你的計算總是會產生0總,因爲無處在你的代碼」實際上獲取num1和num2的值。你可能想要做類似的事情:

num1 = Integer.parseInt(no1.getText().toString()); 
num2 = Integer.parseInt(no2.getText().toString()); 
相關問題