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

Bundle을 이용해서 데이터를 넘기면 NullPointerException이 발생합니다

–1 추천

메인 액티비티의 onCreate에서 Bundle 을 생성&setArguments 해서 Fragment로 값을 넘기고, Fragment의 onCreateView에서  getString 으로 데이터를 받으려하면 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference 가 발생합니다. 

하루넘도록 해결을 못 해서 이렇게 도움을 요청합니다 ㅠㅠ 

Mainactivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...... 상단 생략

    //로그인시 넘긴 변수 받기
    Intent intent = getIntent(); /*데이터 수신*/
    loginId = intent.getExtras().getString("loginId");
    Address1 = intent.getExtras().getString("address1");
    Address2 = intent.getExtras().getString("address2");
    Address2X = intent.getExtras().getString("address2X");
    Address2Y = intent.getExtras().getString("address2Y");

    Bundle fragmentWthrBundle = new Bundle();
    FragmentWthr fragmentWthr = new FragmentWthr();
    fragmentWthrBundle.putString("loginId", loginId);
    fragmentWthrBundle.putString("Address1", Address1);
    fragmentWthrBundle.putString("Address2", Address2);
    fragmentWthrBundle.putString("Address2X", Address2X);
    fragmentWthrBundle.putString("Address2Y", Address2Y);
    fragmentWthr.setArguments(fragmentWthrBundle);

}

FragmentWthr.java

   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_wthr, container, false);

        Bundle bundle = getArguments();
        loginId = bundle.getString("loginId");
        Address1 = bundle.getString("Address1");
        Address2 = bundle.getString("Address2");
        Address2X = bundle.getString("Address2X");
        Address2Y = bundle.getString("Address2Y");
 return view;
    }
AndroidChobo (110 포인트) 님이 2018년 12월 2일 질문

1개의 답변

0 추천
제가 보기엔 첨부된 코드에는 문제가 없고, 보여지지 않는 코드에서 조건문에 의해

Bundle을 set해주지 않는 조건이 있는 것 같습니다.

Fragment에서 Bundle이 항상 채워져서 전달되지 않는 것 같으니,

getArguments()에서 null 체크를 하시고

어떤 상황인지 debug를 하시는게 좋아 보입니다.
디자이너정 (42,810 포인트) 님이 2018년 12월 2일 답변
...