2015-06-06 144 views
0

使用Android Studio,您能指出错误吗?我无法分析为什么我不得不面对这个错误: 只有java的基本背景,这就是我已经创建了计算方法。获取应用程序停止错误

package com.tlians.t_calculator; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 


public class MainActivity extends ActionBarActivity { 


Button add=(Button) findViewById(R.id.add); 
Button sub=(Button) findViewById(R.id.sub); 
Button times=(Button) findViewById(R.id.times); 
Button div=(Button) findViewById(R.id.div); 
EditText num1=(EditText) findViewById(R.id.num1); 
EditText num2=(EditText) findViewById(R.id.num2); 
TextView result=(TextView) findViewById(R.id.result); 


public void calculate(char a){ 
    String N1=num1.getText().toString(); 
    String N2=num2.getText().toString(); 
    float n1=Float.parseFloat(N1); 
    float n2=Float.parseFloat(N2); 
    if(a=='+') 
     result.setText(""+n1+n2); 
    else if(a=='-') 
     result.setText(""+(n1-n2)); 
    else if(a=='/') 
     result.setText(""+n1/n2); 
    else if(a=='*') 
     result.setText(""+n1*n2); 
    else 
     result.setText("Tani has only assigned four functions right now."); 

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

     add.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View v){ 
       calculate('+'); 
      } 
     }); 
     sub.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View v){ 
       calculate('-'); 
      } 

     }); 
     times.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View v){ 
       calculate('*'); 
      } 
     }); 
     div.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View v){ 
       calculate('/'); 
      } 
     }); 


} 

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

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 
+2

检查logcat的输出为崩溃的软件除外。当你找到它时,点击*编辑*并添加堆栈跟踪到你的问题。确定什么是错的,没有真正的错误信息是困难的... – trooper

回答

1
Button add; 
Button sub; 
Button times; 
Button div; 
EditText num1; 
EditText num2; 
TextView result; 

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

Button add=(Button) findViewById(R.id.add); 
sub=(Button) findViewById(R.id.sub); 
times=(Button) findViewById(R.id.times); 
div=(Button) findViewById(R.id.div); 
num1=(EditText) findViewById(R.id.num1); 
num2=(EditText) findViewById(R.id.num2); 
result=(TextView) findViewById(R.id.result); 

     add.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View v){ 
       calculate('+'); 
      } 
     }); 
     sub.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View v){ 
       calculate('-'); 
      } 

     }); 
     times.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View v){ 
       calculate('*'); 
      } 
     }); 
     div.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View v){ 
       calculate('/'); 
      } 
     }); 


} 
+0

比光更快! –

+1

@DerGolem真的,但你的答案其实更好。 – trooper

+0

呃...我不想每个问题都增加重复的答案。一个就足够了。你先于我,你是荣誉!让我们成为运动员吧。 –

0

初始化内部onCreate()方法所有按钮和的EditText。你可以声明按钮,edittext任何组件到全局,但不要将它们初始化为全局。所以这样做:

Button add; 
Button sub; 
Button times; 
Button div; 
EditText num1; 
EditText num2; 
TextView result; 

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

add=(Button) findViewById(R.id.add); 
sub=(Button) findViewById(R.id.sub); 
times=(Button) findViewById(R.id.times); 
div=(Button) findViewById(R.id.div); 
num1=(EditText) findViewById(R.id.num1); 
num2=(EditText) findViewById(R.id.num2); 
result=(TextView) findViewById(R.id.result); 

. 
. 
. 
//your button listener code 

} 
相关问题