현재 화면(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;
         }
        }
    }
}