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

时间:2017-12-04 04:03:32

标签: android listview android-fragments android-adapter onbackpressed

来自ListView的所有数据均由 CursorAdapter 提供。 每当我按下后退按钮并return进行活动时,点击活动即可启动fragment,所有以前的数据仍然堆叠在一起。

4 个答案:

答案 0 :(得分:1)

1)创建一个界面BackPressedListener

public interface BackPressedListener {
    void onBackPressed();
}

2)在您的活动中,您可以覆盖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)在interface上实施BackPressedListener fragment。您可以覆盖onBackPressed中的fragment方法,清除包含这些元素的list,然后将adapter更改通知如下:

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

答案 1 :(得分:0)

按下后退按钮后返回活动时:

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

答案 2 :(得分:0)

你可以尝试

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

        }

答案 3 :(得分:0)

在片段中设置public一个方法,该方法将清除您的列表,并使用片段的实例在其父活动onBackPressed上调用该方法。