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

How to clear ListView on Fragment when back button pressed?

ListView 中的所有数据均由 CursorAdapter 提供。 每当我按下后退按钮和 return 到 activity,然后单击 activity 开始我的 fragment,所有以前的数据仍然在那里堆叠在一起。

当返回到 activity 按下后退按钮调用时:

arraylist.clear();
adapter.notifyDataSetChanged();

1) 创建接口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();
        }

你可以试试

      try {
           arraylist.clear();
           listView.removeAllViews();
        }catch (Exception e){

        }

在片段中制作 public 一个方法,它将清除您的列表并使用片段的实例从其父 activity 的 onBackPressed 上调用该方法。