在我的应用中,我有一个名为Fragment
的{{1}},它使用扩展BaseAdapter的DownloadsFragment
类在ListView的指定路径中显示视频。
在我的Custom Adapter
的getView()方法中,我调用了CardItems.xml,其中包含一个显示Adapter
的按钮,用于从路径中删除视频。
当DeleteActivity
开始时我按下删除按钮,downloadFragment
开始我从中删除活动完成的项目,当我回到DownloadsFragment并滚动listview时出现错误:< / p>
ArrayOutOfBoundIndex
(删除的视频的数量)和应用程序崩溃,我的问题是如何在删除活动完成后返回下载碎片时刷新listview。
答案 0 :(得分:1)
我做了一些非常相似的事情,但我不确定这有多干净:
在DownloadsFragment
中创建全局Fragment
:
public static Fragment myFragment;
在onCreate
的{{1}}中:
Fragment
然后在@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myFragment = this;
}
或您想要刷新Activity
的任何地方,执行以下操作:
DownloadsFragment
<强>更新强>
或者在Fragment frg = DownloadsFragment.myFragment;
if (frg != null) {
getSupportFragmentManager().beginTransaction().detach(frg).commitAllowingStateLoss();
getSupportFragmentManager().beginTransaction().attach(frg).commitAllowingStateLoss();
}
中创建方法:
Fragment
无论您想要在哪里刷新public void refreshFragment() {
getActivity().getSupportFragmentManager().beginTransaction().detach(this).commitAllowingStateLoss();
getActivity().getSupportFragmentManager().beginTransaction().attach(this).commitAllowingStateLoss();
//adapter.notifyDataSetChanged();
}
,请执行以下操作:
Fragment
或者将该方法设为静态并致电:(我不确定这是否有效。您必须亲自测试)
DownloadsFragment f = (DownloadsFragment) DownloadsFragment.myFragment;
f.getFragmentManager().findFragmentByTag("Your Fragment Tag");
if (f!= null) {
f.refreshFragment();
}