2017-06-14 60 views
-1

在我的应用程序中,我有一个Fragment,名为DownloadsFragment,它使用扩展BaseAdapter的Custom Adapter类在ListView中的指定路径中显示视频。如何从另一个活动中刷新片段中的ListeView适配器?

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

downloadFragment开始我按下删除键,DeleteActivity开始我删除其活动完成的项目,当我回到DownloadsFragment和我滚动列表视图我得到一个错误:

ArrayOutOfBoundIndex

(删除的视频的数量)和应用程序崩溃,我的问题是如何在删除活动完成后刷新listview并返回到Downloads Fragment。

回答

0

我做得比较类似的东西,但我不知道如何清洁是这样的:

DownloadsFragment创建一个全局Fragment

public static Fragment myFragment; 

而且在onCreateFragment

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    myFragment = this; 
} 

然后在您的Activity或任何你想要刷新DownloadsFragment,做s omething这样的:

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(); 
} 

或者使该方法静态并调用:(我不确定这是否可行。你必须自己测试)

DownloadsFragment.refreshFragment(); 
+0

谢谢S.R,这个工作对我来说 –

+0

高兴听到这个消息。并且不要忘记接受解决你的问题的答案。 –

相关问题