package com.example.sdilicense;
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast;
public class Sdi_SN extends Activity implements OnItemSelectedListener {
public String si = "SDI"; public String sd = "SDU"; public int l_hap = 0; public int dt = 0, dt1 = 0;
@Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.license);
final EditText et = (EditText) findViewById(R.id.dn_text); final int dt = Integer.valueOf(et.getText().toString()); // final int dt = Integer.parseInt(et.getText().toString()); final EditText et1 = (EditText) findViewById(R.id.serial_text); final int dt1 = Integer.valueOf(et1.getText().toString()); // final int dt1 = Integer.parseInt(et1.getText().toString()); final EditText er2 = (EditText) findViewById(R.id.license_number); final Button bt = (Button) findViewById(R.id.create_btn);
final Spinner spin = (Spinner) findViewById(R.id.Dongle); spin.setPrompt("Smart Digital License 얻기");
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.choice, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spin.setAdapter(adapter);
bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) { // TODO Auto-generated method stub if (!spin.getSelectedItem().toString().equals(si)) { l_hap = dt + dt1; } else if (!spin.getSelectedItem().toString().equals(sd)) { l_hap = dt + dt1; } else { Toast.makeText(getApplicationContext(), "덩글아이디및시리얼 넘버를 입력하여 주세요", Toast.LENGTH_LONG).show(); }
} });
}
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // TODO Auto-generated method stub
}
public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub
}
}
아래의 그림은 위젯으로 만들었습니다.
1. Spinner 에서는 2개의 Spinner을 올렸구용
예) red 와 blue 라고 정함
2. EditText 에서는 숫자를 입력 받습니다.
3. EditText에서는 숫자를 입력 받습니다.
4. Button 에서는 " 2번 과 3번"를 입력 받은 값을 더하여 "6번"에 뿌려줍니다.
5번은 없습니다. 이미지를 만들때 실수 했나봅니다.
문제는 여기서 자꾸 에러가 발생합니다.
LogCat을 올려드립니다.
염치 불구하고 도움을 요청합니다.
public void onClick(View v) {
// TODO Auto-generated method stub
if (!spin.getSelectedItem().toString().equals(si)) {
int l_hap = (dt = Integer.parseInt(et.getText().toString())
+ (dt1 = Integer.parseInt(et1.getText().toString())));
} else if (!spin.getSelectedItem().toString().equals(sd)) {
int l_hap = (dt = Integer.parseInt(et.getText().toString())
+ (dt1 = Integer.parseInt(et1.getText().toString())));
} else {
Toast.makeText(this,"덩글아이디및시리얼 넘버를 입력하여 주세요", Toast.LENGTH_LONG).show();
}
return;
1. final int dt = Integer.valueOf(et.getText().toString()); 이부분을 onClick 부분으로 옮기니 해결은 되었습니다.
위 댓글처럼 내용처럼 오류는 맞는것 같습니다. 찾다가 해결 방법이 딱히 떠오르지 않아서 이렇게 해결했습니다.
문자열을 숫자로 파싱하려는 중에 잘못된 숫자형식 문자열을 파싱한다고 예외가 발생한겁니다.
코드를 보면 onCreate 에서 Integer.valueOf를 수행하는데
이시점에서 EditText 에는 아무 텍스트도 없겠죠; 그래서 "", 빈문자열을 숫자로 파싱하려다 액티비티가 죽는거에요.