Android-调用finish()方法会先调用onPause(),然后在onStop/Destroy之前调用SimpleAdapter的getView()方法,导致崩溃
创始人
2024-08-19 18:00:03
0

这个问题通常发生在使用SimpleAdapter时,因为当调用finish()方法时会触发ListView重新绘制,在这个过程中,SimpleAdapter的getView()方法可能会在onStop或onDestroy之前被调用,导致崩溃。

一种解决方法是在调用finish()方法之前,先调用ListView的setAdapter(null)方法,以清除Adapter并防止调用getView()方法。示例代码如下:

ListView listView = findViewById(R.id.list_view);
listView.setAdapter(null);
finish();

还有一种解决方法是继承SimpleAdapter并覆盖其getView()方法,在方法中添加必要的检查以避免崩溃。示例代码如下:

public class MyAdapter extends SimpleAdapter {
    public MyAdapter(Context context, List> data, int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        try {
            return super.getView(position, convertView, parent);
        } catch (IllegalStateException e) {
            // Ignore this exception
            return new View(getContext());
        }
    }
}

使用这个自定义Adapter时,需要将SimpleAdapter替换为MyAdapter,如下所示:

ListView listView = findViewById(R.id.list_view);
MyAdapter adapter = new MyAdapter(this, data, R.layout.item_layout, from, to);
listView.setAdapter(adapter);

这样,在调用finish()方法之后,SimpleAdapter的getView()方法就不会再被调用了,也就避免了崩溃。

相关内容

热门资讯

据悉!wepoker底牌透视(... 据悉!wepoker底牌透视(透视)呱呱丰城双剑辅助(一贯存在有辅助辅助器)-哔哩哔哩暗藏猫腻,小编...
透视计算!wepoker免费脚... 透视计算!wepoker免费脚本咨询(透视)爱玩修改器(确实是真的辅助插件)-哔哩哔哩1、wepok...
近日!wepoker黑侠辅助器... 近日!wepoker黑侠辅助器正版下载(透视)越乡游义乌辅助器微信(原来真的是有辅助安装)-哔哩哔哩...
今日!pokemmo辅助工具(... 今日!pokemmo辅助工具(透视)微友辅助神器下载(确实真的有辅助神器)-哔哩哔哩1、微友辅助神器...
透视中牌率!悦扑克脚本(透视)... 透视中牌率!悦扑克脚本(透视)天蝎大厅辅助(果然真的有辅助app)-哔哩哔哩1、天蝎大厅辅助免费脚本...
网友热议!wepoker插件辅... 网友热议!wepoker插件辅助(透视)云南捞腌菜辅助(确实真的有辅助平台)-哔哩哔哩1、网友热议!...
透视最新!hardrock透视... 透视最新!hardrock透视工具(透视)渝都麻将开挂方法(好像有辅助修改器)-哔哩哔哩1)渝都麻将...
透视神器!wepoker私人局... 透视神器!wepoker私人局规律(透视)丽水都莱有辅助吗(其实存在有辅助安装)-哔哩哔哩1、打开软...
于此同时!wepoker开脚本... 您好,免费游戏辅助软件这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多玩...
今日!智星德州插件怎么下载(透... 今日!智星德州插件怎么下载(透视)非凡贪玩挂(都是存在有辅助平台)-哔哩哔哩1、进入到非凡贪玩挂是否...