Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从另一个活动中刷新片段中的ListView适配器?_Android_Listview_Android Fragments_Adapter - Fatal编程技术网

Android 如何从另一个活动中刷新片段中的ListView适配器?

Android 如何从另一个活动中刷新片段中的ListView适配器?,android,listview,android-fragments,adapter,Android,Listview,Android Fragments,Adapter,在我的应用程序中,我有一个名为DownloadsFragment的片段,它使用扩展BaseAdapter的自定义适配器类,在列表视图中以指定路径显示视频 在我的适配器的getView()方法中,我调用CardItems.xml,它包含一个显示DeleteActivity的按钮,以从路径中删除视频 当downloadFragmentstart我按下删除按钮时,DeleteActivitystart我从中删除该项目,活动完成,当我返回DownloadsFragment并滚动列表视图时,我得到一个错误

在我的应用程序中,我有一个名为
DownloadsFragment
片段,它使用扩展BaseAdapter的
自定义适配器
类,在列表视图中以指定路径显示视频

在我的
适配器的getView()方法中,我调用CardItems.xml,它包含一个显示
DeleteActivity
的按钮,以从路径中删除视频

downloadFragment
start我按下删除按钮时,
DeleteActivity
start我从中删除该项目,活动完成,当我返回DownloadsFragment并滚动列表视图时,我得到一个错误:

边界索引的排列


(已删除视频的数量)和应用程序崩溃,我的问题是如何在删除活动完成并返回下载片段后从删除活动中刷新listview。

我做了类似的事情,但我不确定这有多干净:

DownloadsFragment
中创建一个全局
片段

public static Fragment myFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myFragment = this;
}
public void refreshFragment() {
 getActivity().getSupportFragmentManager().beginTransaction().detach(this).commitAllowingStateLoss();
 getActivity().getSupportFragmentManager().beginTransaction().attach(this).commitAllowingStateLoss();
 //adapter.notifyDataSetChanged();
}
onCreate
片段中:

public static Fragment myFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myFragment = this;
}
public void refreshFragment() {
 getActivity().getSupportFragmentManager().beginTransaction().detach(this).commitAllowingStateLoss();
 getActivity().getSupportFragmentManager().beginTransaction().attach(this).commitAllowingStateLoss();
 //adapter.notifyDataSetChanged();
}
然后在您的
活动
中或您想刷新
下载片段
的任何地方,执行以下操作:

Fragment frg = DownloadsFragment.myFragment;
  if (frg != null) {
    getSupportFragmentManager().beginTransaction().detach(frg).commitAllowingStateLoss();
    getSupportFragmentManager().beginTransaction().attach(frg).commitAllowingStateLoss();
 }
DownloadsFragment f = (DownloadsFragment) DownloadsFragment.myFragment;
f.getFragmentManager().findFragmentByTag("Your Fragment Tag");
   if (f!= null) {
      f.refreshFragment();
}
更新

或者在
片段中创建一个方法:

public static Fragment myFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myFragment = this;
}
public void refreshFragment() {
 getActivity().getSupportFragmentManager().beginTransaction().detach(this).commitAllowingStateLoss();
 getActivity().getSupportFragmentManager().beginTransaction().attach(this).commitAllowingStateLoss();
 //adapter.notifyDataSetChanged();
}
无论您想在哪里刷新
片段
,请执行以下操作:

Fragment frg = DownloadsFragment.myFragment;
  if (frg != null) {
    getSupportFragmentManager().beginTransaction().detach(frg).commitAllowingStateLoss();
    getSupportFragmentManager().beginTransaction().attach(frg).commitAllowingStateLoss();
 }
DownloadsFragment f = (DownloadsFragment) DownloadsFragment.myFragment;
f.getFragmentManager().findFragmentByTag("Your Fragment Tag");
   if (f!= null) {
      f.refreshFragment();
}
或者将该方法设置为静态并调用:(我不确定这是否有效。您必须自己测试它)


很高兴听到这个消息。别忘了接受解决您问题的答案。对我来说,几乎忘了在
onCreate()中分配片段。