android - PagerAdapter.notifyDataSetChanged时崩溃:Activity has been destroyed
迷茫
迷茫 2017-04-17 14:31:27
[Android讨论组]
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime: java.lang.IllegalStateException: Activity has been destroyed
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1522)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:634)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:617)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:930)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2910)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at com.dreamiii.enviroment.MainActivity$1$1.run(MainActivity.java:31)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:136)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5001)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
10-20 12:05:52.392 30367-30367/com.dreamiii.enviroment E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
PHPz

Fragment是attach在Activity上的,crash的原因显然是你在尝试调用notifyDataSetChanged更新fragment时,该fragment的attached activity已经被销毁了:“IllegalStateException: Activity has been destroyed”.
一个workaround是这样的:

// here you check the value of getActivity() and break up if needed
if(getActivity() == null) {
    return;
}
// do your stuff to update fragment
// ...
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号