안드로이드 개발 질문/답변
(글 수 45,052)
현재 화면(View.java)에 있는 어떤 아이콘을 누르면 alert dialog처럼 생긴 activity(EdittextDialog.java)를 띄우고,
이 activity에 있는 edittext에 숫자를 입력한 후 OK버튼을 누르면 특정 클래스(Control.java)의
메소드를 호출하려고 합니다.
그런데 putExtra로 객체를 전달하면 어플이 죽습니다.
안드로이드 초보라 원인을 잘 모르겠군요..
아래에 대강의 뼈대 코드를 적어봤는데요.
혹시 이것만 보고 문제점을 알려주실 수 있는지요..
요지는
1. 현재화면에서 객체 생성
2. 새로 띄울 액티비티로 putextra(객체) : 에러발생
3. 새 액티비티에서 객체 받음
입니다.
(코드하이라이터 너무 구리네요 ㅡㅡ; 이거 편집하는데만 십여분 잡아먹은 듯)
- Control.java
public class Control extends Thread implements Serializable {
...
public int ControlMonitor(int num){
...
}
}
- View.java
public class DVRView extends Activity {
private Control ctrl;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
ctrl = new Control();
}
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch(v.getId()){
case(R.id.view_btn_call_monitor):{
if ( action == MotionEvent.ACTION_UP ) {
Intent intent = new Intent(View.this, EdittextDialog.class);
intent.putExtra("ObjectData", ctrl);
startActivity(intent);
}
break;
}
}
}
}
- EdittextDialog.java
public class EdittextDialog extends Activity implements OnClickListener {
Control dvr;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.alert_dialog_edittext);
Intent intent = getIntent();
if (intent != null) {
dvr = (Control)intent.getSerializableExtra("ObjectData");
}
ImageButton btnok = (ImageButton)findViewById(R.id.alert_edittext_ok_btn);
btnok.setOnClickListener(this);
}
public void onClick(View v) {
switch(v.getId()){
case(R.id.alert_edittext_ok_btn):{
EditText et = (EditText)findViewById(R.id.alert_edittext);
String num = et.getText().toString();
if (num.length() > 0) {
dvr.ControlMonitor(Integer.parseInt(num));
}
finish();
return;
}
}
}
}




LogCat 첨부 부탁드려요~!!