2011-03-28 13 views
1

저는 응용 프로그램 개발의 초보자입니다. 내 문제는 그 때 내 애플 리케이션을 실행하고 계산 버튼을 클릭하면, 프로그램이 중지됩니다. 코드 다음 edittext 구성 요소에서버튼 클릭 문제

public class screen1 extends Activity { 
    private EditText name; 
    private CheckBox box1; 
    private Spinner spinner; 
    private TextView text1, text2, text3, text4, text5, text6; 
    private Button calcbutton, closebutton; 
    String strength; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Spinner hubSpinner = (Spinner) findViewById(R.id.myspinner); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.military_ranks , android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     hubSpinner.setAdapter(adapter); 

     name = (EditText)findViewById(R.id.editText1);  
     strength = name.getText().toString(); 

     box1 = (CheckBox)findViewById(R.id.checkBox1); 

     text1 = (TextView)findViewById(R.id.textView4); 
     text2 = (TextView)findViewById(R.id.textView6); 
     text3 = (TextView)findViewById(R.id.textView8); 
     text4 = (TextView)findViewById(R.id.textView10); 
     text5 = (TextView)findViewById(R.id.textView12); 
     text6 = (TextView)findViewById(R.id.textView14); 

     final Button calcbutton = (Button) findViewById(R.id.button1); 
     calcbutton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       int str = Integer.valueOf(strength); 
       int rank = spinner.getSelectedItemPosition()+1; 
       double sebzes; 
       if(box1.isChecked()){ 
        sebzes = (((rank-1)/20+0.3)*((str/10)+40))*1*(1+1/100); 
        text1.setText(Double.toString(sebzes)); 
       } 
       else{ 
        sebzes = (((rank-1)/20+0.3)*((str/10)+40))*1; 
        text1.setText(Double.toString(sebzes)); 
       } 
      } 
     }); 

     final Button closebutton = (Button) findViewById(R.id.button2); 
     closebutton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       finish(); 
      } 
     }); 
    } 
} 

당신은 숫자 만 쓸 수 있어야합니다. 왜 작동하지 않는지 모르겠다.

+0

로그를 게시해야합니다. 그런 다음 코드를 작성할 위치를 확인할 수 있습니다. 이 문제가 있다고 가정합니다 : int str = Integer.valueOf (strength); – RoflcoptrException

+0

갑자기 편집이 끝났습니까? 그 팝업은 끔찍합니다. – MusiGenesis

+0

나는 StackOverflow에 대해 이야기하고있다. 당신의 코드 샘플 (전혀 끔찍하지 않다)이다. :) – MusiGenesis

답변

1

문제는이 두 라인은 다음과 같습니다

int str = Integer.valueOf(strength); 
int rank = spinner.getSelectedItemPosition()+1; 

당신이 당신의 EditText에 숫자 만 사용하는 경우 첫 번째는 실패하지 않습니다하지만 그을 보장하기 위해 더 나은 것 또는 적어도 throw되는 예외를 catch 당신은 문자를 숫자 값으로 변환하려고 시도합니다. 또한 Integer.valueOf(strength).intValue();을 사용할 수도 있습니다. 따라서 일반적으로 실제로 필요하지는 않습니다.

실제 문제는 두 번째 줄입니다. 변수 spinner을 선언했지만 결코 인스턴스화하지 않습니다. 그래서 NullPointerException이 발생합니다.

관련없는 참고 사항 : Java 명명 규칙에 따라 클래스 이름을 대문자로 시작해야합니다.

+1

+1 logcat 출력없이 응답 –

0

어디서나 spinner을 인스턴스화하지는 않지만 버튼 클릭 방법의 두 번째 줄에서 참조하고 있습니다. 아마도 null 참조 문제 일 겁니다.