마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

데이터 객체화 해서 보내기!!! 오류가 나는데 초보라서 오류를 볼 줄 모르겠네요!!!

0 추천

MainActivity 부분

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 0) {
        if(resultCode == 0){
            Toast.makeText(MainActivity.this,"취소됨",Toast.LENGTH_SHORT).show();
        }else if(resultCode == 1){
            //객체로 받는 법 역 직렬화!fsdfsdf
            // 하는 함수
            try {

               Note note = data.getParcelableExtra("note");
                String notetitle = note.getTitle();
                Toast.makeText(MainActivity.this, notetitle, Toast.LENGTH_SHORT).show();
            }catch (Exception ex){
                ex.printStackTrace();
                Toast.makeText(MainActivity.this, "실패", Toast.LENGTH_SHORT).show();
           
글작성 부분(NewAcitivity)
 
        btnfinish.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                //사용자가 입력한 데이터에 접근
                EditText et01 = (EditText)findViewById(R.id.et01);
                EditText et02 = (EditText)findViewById(R.id.et02);
                //사용자가 입력한 문자열 가져오기
                String title = et01.getText().toString();
                String content = et02.getText().toString();


                //Note객체에 집어넣어서 데이터 전달
                Note note = new Note();
                note.setTitle(title);
                note.setContent(content);
                Intent intent = new Intent();
                intent.putExtra("note", note);
                //인텐트를 만들어 주고 "title"이라는 이름의 title객체를 넘김
//                Intent intent = new Intent();
//                intent.putExtra("title", title);
//                intent.putExtra("content", content);
//                Intent intent = new Intent();
//                intent.putExtra("a1","testAA");
//                intent.putExtra("b1","testBB");
//                intent.putExtra("c1","testCC");

                setResult(1, intent);//데이터를 돌려보내는 함수 즉 데이터 저장
                finish();//Activity종료료
전체설명
메인 액티비티에서 버튼누르고 들어가면 Newclass라는 글쓰는 클래스가 나오고 
거기서 Note라는 Serializeble을 implements한 데이터클래스에 제목 내용을 저장하고 메인으로 객체를 보내서 test로 Toask를 찍어볼려고 하는데 자꾸 객체가 null이라고 예외상황으로 빠지네요....... 고수님들 ㅠㅠㅠ도와주세요
오류관련부분입니다 ㅠㅠ

D/OpenGLRenderer: endAllStagingAnimators on 0xa1998280 (RippleDrawable) with handle 0xaa2ce0e0
W/Bundle: Key note expected Parcelable but value was a smc.minjoon.myintentdata.Note.  The default value <null> was returned.
W/Bundle: Attempt to cast generated internal exception:
          java.lang.ClassCastException: smc.minjoon.myintentdata.Note cannot be cast to android.os.Parcelable
              at android.os.Bundle.getParcelable(Bundle.java:792)
              at android.content.Intent.getParcelableExtra(Intent.java:5377)
              at smc.minjoon.myintentdata.MainActivity$override.onActivityResult(MainActivity.java:71)
              at smc.minjoon.myintentdata.MainActivity$override.access$dispatch(MainActivity.java)
              at smc.minjoon.myintentdata.MainActivity.onActivityResult(MainActivity.java:0)
              at android.app.Activity.dispatchActivityResult(Activity.java:6428)
              at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)
              at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
              at android.app.ActivityThread.-wrap16(ActivityThread.java)
              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
              at android.os.Handler.dispatchMessage(Handler.java:102)
              at android.os.Looper.loop(Looper.java:148)
              at android.app.ActivityThread.main(ActivityThread.java:5417)
              at java.lang.reflect.Method.invoke(Native Method)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String smc.minjoon.myintentdata.Note.getTitle()' on a null object reference
W/System.err:     at smc.minjoon.myintentdata.MainActivity$override.onActivityResult(MainActivity.java:72)
W/System.err:     at smc.minjoon.myintentdata.MainActivity$override.access$dispatch(MainActivity.java)
W/System.err:     at smc.minjoon.myintentdata.MainActivity.onActivityResult(MainActivity.java:0)
W/System.err:     at android.app.Activity.dispatchActivityResult(Activity.java:6428)
W/System.err:     at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)
W/System.err:     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
W/System.err:     at android.app.ActivityThread.-wrap16(ActivityThread.java)
W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err:     at android.os.Looper.loop(Looper.java:148)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

ODGG (730 포인트) 님이 2017년 1월 27일 질문
ODGG님이 2017년 1월 27일 수정
Parcelable 구현하신 부분이 잘못된거 같은데 그 부분도 좀 볼수 있을까염?? Note 클래스???
ㅠㅠ 게시판을 하나 만들어 보고 싶었는데 이것때매 미치겠네요ㅠㅠ

public class Note implements Serializable {
    private String title;
    private String content;

    public Note(){

    }

    public Note(String title, String content) {
        this.title = title;
        this.content = content;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}
Serializable 이네염.. getParcelableExtra 로 받으려면 Parcelable로 구현하던가 아니면 getSerializableExtra으로 받으셔야함
정말 감사합니다!!!!!!!!!!!!!!!!!!!!!!! 와 사실 getSerializableExtra도 써봤는데 어떻게 썻냐면 Intent intent = getIntent();
Note note = (Note) intent.getSerializableExtra("note"); 이런식으로 썼네요....
근데 이런식으로 하면 안되는 이유가 있나요??
하이튼 정말 감사합니다!!! data.getSerializableExtra로 하니까 되네요 ㅎㅎㅎ
아 그리고 이 사이트는 처음이라.. 제가 점수를 주는건가요??? 채택을 해드리고싶은데 어떻게 하는지..

1개의 답변

0 추천
댓글로는 안되고 이거 채택해주심 됩미다.
Development Guy (70,570 포인트) 님이 2017년 1월 31일 답변
...