onActivityResult (...) 메소드 내의 활동 클래스에서 뷰 페이저 어댑터에 대한 notifyDataSetChanged()를 호출하려고합니다. 일부 장치에서만 "치명적인 예외 : java.lang.IllegalStateException : Activity was destroyed "오류가 발생합니다. 아래는 스택 추적입니다.오류 받기 : viewPager 어댑터에 대해 notifyDataSetChanged를 수행 할 때 "java.lang.IllegalStateException : Activity has destroyed"
Fatal Exception: java.lang.IllegalStateException: Activity has been destroyed
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1515)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:638)
at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:621)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:1003)
at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2996)
at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:279)
at com.demo.activities.ActivityMain$1.run(ActivityMain.java:180)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6351)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:786)
뷰 페이저에는 단 두 개의 조각 (v4) 만 있습니다. 아래 코드에서 notifyDataSetChanged를 수행하는 라인에서 오류가 발생합니다.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 100) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mViewPager.getAdapter().notifyDataSetChanged();
}
}, 1000);
}}
이 예외를 피하기 위해 활동이 여전히 존재하는지 여부를 검사하려면 run 메소드 내부의 검사를 수행해야합니까?