2012-03-27 1 views
0

나는 안드로이드에 약간 새로운데, 나는 약간의 자바 경험이있다. 그래서 저는 인터넷에서 많은 수의 튜토리얼을보고 나서 앱을 만들 수 있는지 알아보기 위해 '물리 계산기'를 만들기 시작했습니다. 내 XML 파일을 원하는 방식으로 설정했지만 모두 위아래에 있지 않습니다. 나는 여러 가지 것을 시도했지만, 내가하고있는 일에서 다소 길을 잃었다. 기본적으로,이 코드를 사용하여 수행 할 작업은 적절한 편집 텍스트 필드에있는 내용을 가져 와서 적절한 단추를 눌렀을 때 정수로 변환하는 것입니다. 그러나 응용 프로그램은 항상 단추를 누를 때마다 강제로 닫힙니다. 버튼과 같은 그래픽을 '볼'수 있습니다.) (예를 들어, 속도의 경우 모든 사용자가 제공하기 때문에 시간과 거리 만 가져옵니다.) 아무도 내가 여기서 뭘 잘못하고 있는지 알아?강제 종료 버튼 누르기

package t.t.slash25; 

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

public class Physics extends Activity implements OnClickListener 
{ 
int v1 , d , t; 
EditText velocity, distance , time; 
Button calcVel, calcDis, calcTime; 
TextView formula, result; 

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

private void initialize() 
{ 
    formula = (TextView) findViewById(R.id.tvFormula); 
    velocity = (EditText) findViewById(R.id.etVelocity); 
    distance = (EditText) findViewById(R.id.etDistance); 
    time = (EditText) findViewById(R.id.etTime); 
    calcVel = (Button) findViewById(R.id.bVel); 
    calcVel.setOnClickListener(this); 
    calcDis = (Button) findViewById(R.id.bDis); 
    calcDis.setOnClickListener(this); 
    calcTime = (Button) findViewById(R.id.bTime); 
    calcTime.setOnClickListener(this); 
    result = (TextView) findViewById(R.id.tvResult); 
} 

public void onClick(View v) 
{ 

    switch (v.getId()) 
    { 
     case R.id.bVel: //when the button is pressed, convert the editText's to integers, do the formula, and set the text 
     d = Integer.getInteger(distance.getText().toString()); 
     t = Integer.getInteger(time.getText().toString()); 
     v1 = (d/t); 
     result.setText("Velocity = " + v1); 
      break; 

    } 
    } 
} 

나는이 모든 것들을 정말로 잃어 버렸습니다. 누구든지 저에게 줄 수있는 도움을 주시면 감사하겠습니다.

P. 다음은 logcat 오류 메시지입니다.

03-27 15:26:58.959: E/AndroidRuntime(1084): FATAL EXCEPTION: main 
03-27 15:26:58.959: E/AndroidRuntime(1084): java.lang.NullPointerException 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at t.t.slash25.Physics.onClick(Physics.java:47) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at android.view.View.performClick(View.java:2532) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at android.view.View$PerformClick.run(View.java:9277) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at android.os.Handler.handleCallback(Handler.java:587) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at android.os.Handler.dispatchMessage(Handler.java:92) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at android.os.Looper.loop(Looper.java:143) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at android.app.ActivityThread.main(ActivityThread.java:4196) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at java.lang.reflect.Method.invoke(Method.java:507) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-27 15:26:58.959: E/AndroidRuntime(1084):  at dalvik.system.NativeStart.main(Native Method) 

감사합니다.

+3

logcat을 게시하십시오. 어떻게 접근해야할지 모르겠다면 : http : //developer.android.com/guide/developing/tools/logcat.html – EGHDK

답변

2

문제는이 두 줄에있을 수 있습니다 :

d = Integer.getInteger(distance.getText().toString()); 
t = Integer.getInteger(time.getText().toString()); 

문자열을 정수로 변환하지 않습니다 Integer.getInteger(), 당신은 대신이처럼 Integer.parseInt()을 사용해야합니다

d = Integer.parseInt(distance.getText().toString()); 
t = Integer.parseInt(time.getText().toString()); 

이보기 자세한 내용은 다음 답변을 참조하십시오. https://stackoverflow.com/a/3123350/284618

+0

그런 어리석은 실수를 저질렀다는 것을 믿을 수 없습니다. 완벽하게 고정되었습니다. 도와 줘서 고마워! – user1296441

0

d와 t를 위의 코드로 변경하십시오.

d = Integer.parseInt(distance.getText().toString().trim()); 
t = Integer.parseInt(time.getText().toString().trim()); 
    Btw dont use int for storing v1, you may get 0 as the answer even if it is 0.37 or something like that.