android - 按下后退按钮时如何清除 Fragment 上的 ListView?

标签 android listview android-fragments android-adapter onbackpressed

ListView 中的所有数据均由 CursorAdapter 提供。 每当我按下后退按钮并返回到 Activity 时,然后单击该 Activity 以启动我的 fragment ,所有以前的数据仍然在那里堆叠在一起。

最佳答案

1) 创建接口(interface)BackPressedListener:

public interface BackPressedListener {
    void onBackPressed();
}

2) 在您的 Activity 中,您可以覆盖 onBackPressed():

@Override
public void onBackPressed() {
    List<Fragment> fragmentList = getSupportFragmentManager().getFragments();
    if (fragmentList != null) {
        for(Fragment fragment : fragmentList){
           if(fragment instanceof BackPressedListener){
               ((BackPressedListener)fragment).onBackPressed();
           }
        }
    }
}

3) 在您的 fragment 上实现接口(interface) BackPressedListener。您将覆盖 fragment 中的 onBackPressed 方法,清除包含元素的 list,然后通知 adapter变化如下:

   @Override
        public void onBackPressed()
        {
             arrayList.clear();
             adapter.notifyDataSetChanged();
             finish();
        }

关于android - 按下后退按钮时如何清除 Fragment 上的 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626321/

相关文章:

android - Urban Airship Android GCM 未在 Android Oreo 和 Pie 上接收推送通知

java - 重构谷歌的 NetworkBoundResource 类以使用 RxJava 而不是 LiveData

android - 除非重新启动,否则滑动选项卡中的 ListView 不会更新

java - 如何右对齐ImageView

android - PopupWindow 中 ListView 的问题

java - viewPager 不显示 fragment

android - 我如何处理方向更改以使 fragment 无法加载?

java - 我可以暂时暂停 ORMLite 中自动生成的 ID 吗?

android - VS Code 中没有设备 - Flutter

android - 添加 fragment 时更改操作栏项目和标题