0
다음 코드를 사용하면 장치를 회전 할 때 오류가 발생합니다.방향 변경 후 NullPointerException
Picasso.with(container.getContext()).load("http://image.tmdb.org/t/p/w185/" + mMovie.getPosterPath()).error(R.drawable.noimagefound).into((ImageView)rootView.findViewById(R.id.image_poster));
이는 화면을 회전 할 때만 발생합니다. 만약 내가 브레이크 포인트가 있고 코드를 디버깅, 그럼 제대로 작동합니다. 그것은 그 자체로 움직이는 경우에만 부서지는 것처럼 보입니다.
오류가 아래에 붙여 :
Process: com.example.strahinja.popularmoviesp2, PID: 2942
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.strahinja.popularmoviesp2/com.example.strahinja.popularmoviesp2.activity.MovieListActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4077)
at android.app.ActivityThread.-wrap15(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1350)
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)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference
at com.example.strahinja.popularmoviesp2.fragment.MovieDetailFragment.onCreateView(MovieDetailFragment.java:47)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1272)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2149)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:600)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
at android.app.Activity.performStart(Activity.java:6253)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4077)
at android.app.ActivityThread.-wrap15(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1350)
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)
누군가가 내가이 문제를 해결하기 위해해야 할 일을 말해 주시겠습니까?
답장을 보내 주셔서 감사합니다. 내 코드가 잘못되었음을 알고 있습니다. 이 라인은 내 recycleradatper의'onBindView()'메소드에서 호출되고있다. 활동이 시작되면 어댑터가 호출됩니다. 그래서 왜 그런 일이 일어나고 있는지를 놓치고있는 것입니다. –
'container'가 액티비티에서 여러분의 어댑터의 생성자에 전달한 뷰에 대한 참조 인 경우 문제는'container'가 액티비티가 다시 작성되었지만 어댑터가 아니기 때문에 더 이상 존재하지 않습니다. 이것이'onBindView()'에 있다면,보다 안정적인 컨텍스트를 얻는 방법은'holder.itemView.getContext()'를 호출하는 것입니다. –
그걸 수정 한 것 같습니다. 고마워요! –