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()方法就不会再被调用了,也就避免了崩溃。

相关内容

热门资讯

透视了解!wpk俱乐部有没有辅... 透视了解!wpk俱乐部有没有辅助,wpk德州局怎么透视,扑克教程(有挂脚本);进入游戏-大厅左侧-新...
透视透视!wpk是真的还是假的... 透视透视!wpk是真的还是假的,wpk有辅助器吗,AI教程(有挂揭秘);1、构建自己的wpk是真的还...
透视ai代打!wpk俱乐部辅助... 透视ai代打!wpk俱乐部辅助器,wpk透视是真的假的,透牌教程(有挂教程)1、wpk透视是真的假的...
透视神器!德州hhpoker是... 透视神器!德州hhpoker是真的吗,hhpoker真的假的,细节方法(有挂技巧)1、德州hhpok...
透视智能ai!wpk透视插件,... 透视智能ai!wpk透视插件,wpk控制牌是真的吗,AI教程(有挂黑科技)一、wpk控制牌是真的吗软...
透视透视!hhpoker开挂教... 透视透视!hhpoker开挂教程,hhpoker透视脚本下载,必赢方法(有挂揭秘)1、hhpoker...
透视透视!wpk辅助哪里买,w... 透视透视!wpk辅助哪里买,wpk插件,科技教程(有挂细节)1、许多玩家不知道wpk辅助哪里买辅助软...
透视工具!购买的wpk辅助在哪... 透视工具!购买的wpk辅助在哪里下载,wpk有作弊吗,新2025版(有挂详情);1、打开软件启动之后...
透视模拟器!如何判断wpk辅助... 透视模拟器!如何判断wpk辅助软件的真假,wpk模拟器是什么,曝光教程(有挂规律)1、如何判断wpk...
透视教学!wpk俱乐部辅助器,... 透视教学!wpk俱乐部辅助器,wpk作弊是真的吗,透视教程(有挂详情)1、wpk作弊是真的吗系统规律...