2014-02-13 43 views
0

我是新来的应用程序制作,并且正在制作一个简单的计算器。当我按下我制作的应用程序上的一个按钮时,应用程序关闭,它说不幸的是应用程序已关闭

每当我点击一个按钮,我就会收到消息“不幸的是,计算器已经停止。”任何帮助将不胜感激。

XML文件:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".Calculator" > 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="70dp" 
    android:layout_marginTop="25dp" 
    android:ems="10" > 

    <requestFocus /> 
</EditText> 

<EditText 
    android:id="@+id/editText2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/editText1" 
    android:layout_marginLeft="70dp" 
    android:layout_marginTop="26dp" 
    android:ems="10" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="20dp" 
    android:text="Add" 
    android:onClick="DoAdd" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="90dp" 
    android:text="Subtract" 
    android:onClick="DoMinus"/> 

<Button 
    android:id="@+id/button3" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true" 
    android:layout_toRightOf="@+id/button2" 
    android:onClick="DoTimes" 
    android:text="Multiply" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button2" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="94dp" 
    android:text="TextView" /> 

Java文件:

package com.example.calculator; 

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

public class Calculator extends Activity { 

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

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

public void doAdd(View v) 
{ 
    EditText firstNumber = (EditText)findViewById(R.id.editText1); 
    EditText secondNumber = (EditText)findViewById(R.id.editText2); 

    double x = Double.parseDouble(firstNumber.getText().toString()); 
    double y = Double.parseDouble(secondNumber.getText().toString()); 

    double total = x + y; 

    TextView answerSpace = (TextView)findViewById(R.id.textView1); 
    answerSpace.setText(Double.toString(total)); 
} 
} 

三江源。

+0

堆栈跟踪在哪里? – nKn

+0

android:onClick =“DoAdd”给你的错误,因为它不存在于你的java代码中,小心上/下壳android:onClick =“doAdd” – Aiapaec

回答

3

更改XML onClick属性正好在你的java代码的方法名称相匹配:

<Button 
android:id="@+id/button1" 
... 
android:onClick="doAdd" /> 

注意开头小写d

如果这两者不匹配,则应用会在Android尝试调用您指定的onClick方法时崩溃。

+0

Thankyou,that worked :) great help :) – user3307598

0
FD_ already pointed out the mistake from your code. 

But for better coding approach you can follow this. If you wish. 

In your xml file, define single method name for onClick on each button ie for 
addition,substration,division,multiplication. 

What i mean to say...? 

// For Addition.... 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="20dp" 
    android:text="Add" 
    android:onClick="calculate" /> 

//Define android:onClick="calculate" for remaining 3 buttons 

ie say for subtraction 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="20dp" 
    android:text="Subract" 
    android:onClick="calculate" /> 

do similarly for division and multiplication 


Now, in Java File 

1)Define Variables globally 
2)Find their ids in onCreateMethod(), ie when the activity created. 

How to do this? 


public class Calculator extends Activity 
{ 
    EditText firstNumber,secondNumber; 

    onCreate() 
    { 
    firstNumber = (EditText)findViewById(R.id.editText1); 
    secondNumber = (EditText)findViewById(R.id.editText2); 
    } 

    public void calculate(View v) 
    { 

    switch(v.getId()) 
     { 

     case R.id.button1: 
       // Do coding here addition.... 
       break; 
      case R.id.button2: 
       // Do coding here substraction.... 
       break; 
      case R.id.button3: 
       // Do coding here multiplication.... 
       break; 
      case R.id.button4: 
       // Do coding here division.... 
       break; 

     } 
    } 


} 
相关问题