【问题标题】:How to clear ListView on Fragment when back button pressed?按下后退按钮时如何清除片段上的 ListView?
【发布时间】:2017-12-04 04:03:32
【问题描述】:

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

【问题讨论】:

  • 只需制作 ArrayList.clear() 和 notifydataSetChanged

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


【解决方案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) 在您的fragment 上实现interface BackPressedListener。您将覆盖fragment 中的onBackPressed 方法,清除包含元素的list,然后将更改通知adapter,如下所示:

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

【讨论】:

  • 我应该把这段代码放在我的活动课上吗? arrayList 指的是什么?我在 Fragment 中创建 ListView。
  • List中的那个“Fragment”,我应该把它改成我的Fragment名称吗?还是我需要导入的 android 类?
  • 没有。这就是列表所包含的 Object 的类型,在本例中为 Fragment。
  • 我得到“getFraments can only be called from the same library group”错误
  • 在给出错误的行上方添加 //noinspection RestrictedApi。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    按下返回键调用后返回activity时:

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

    【讨论】:

    • 那么我应该将它添加到我的 Fragment 还是 Activity 类中?抱歉新手问题
    • 据我所知,我们不能在 Fragment 上执行 onBackPressed
    • 是包含listview的activity吗?
    • 不,它是我的片段。我的片段由活动发起
    • 所以从主要活动中您正在加载片段?加载片段时,您是在调用 fragmentTransaction.replace() 还是 fragmentTransaction.add() ?
    【解决方案4】:

    你可以试试

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 2014-04-30
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多