Android 如何从FragmentActivity更新片段中的ListView?

Android 如何从FragmentActivity更新片段中的ListView?,android,android-listview,android-fragments,android-fragmentactivity,Android,Android Listview,Android Fragments,Android Fragmentactivity,我有三个片段,其中一个有一个ListView,它在异步任务中填充(以JSON的形式从服务器获取数据)。我想做的是在标签被更改为带有ListView的片段时调用这个异步任务 我有一个选项卡式/可切换界面,当用户导航到该片段时,我不知道在FragmentActivity中在何处进行调用以刷新列表视图 现在我调用异步任务,如下所示newloadAllProducts().execute()。我想我需要在FragmentActivity的onTabSelected()方法中调用此异步任务,但我不确定如何

我有三个片段,其中一个有一个ListView,它在异步任务中填充(以JSON的形式从服务器获取数据)。我想做的是在标签被更改为带有ListView的片段时调用这个异步任务

我有一个选项卡式/可切换界面,当用户导航到该
片段时,我不知道在
FragmentActivity
中在何处进行调用以刷新
列表视图

现在我调用异步任务,如下所示
newloadAllProducts().execute()列表视图的片段的
onCreateView()
方法中的code>。我想我需要在
FragmentActivity
的onTabSelected()方法中调用此异步任务,但我不确定如何进行此调用…非常感谢您的帮助

谢谢

编辑1: 根据答案中的内容尝试了类似的方法:

public void onResume() {
    super.onResume();

    new LoadAllProducts().execute();
}
没有运气,没有抛出错误,也没有刷新数据,所以我猜LoadAllProducts()没有被调用

编辑2: 现在尝试类似的方法:
恢复时公开作废(){ super.onResume()

^片段内部。以及父活动内部的以下内容:

@Override
public void onTabSelected(Tab arg0, android.app.FragmentTransaction arg1) {
    // TODO Auto-generated method stub

Fragment frag = (Fragment) getSupportFragmentManager().findFragmentById(arg0.getPosition());

if (arg0.getPosition() == 1) {
    frag.onResume();
}
}
在您实际运行应用程序并滑动到位置1的选项卡之前,这不会显示任何错误。这是LogCat。我真的不知道如何在滑动到其片段/选项卡时刷新此列表:(


我想当你导航到另一个标签页时,简历上会有人打电话给你


我自己没有使用过选项卡,但如果是这样的话,我会将异步任务放在那里。

我可以发布的内容不多,我的异步任务中没有任何错误,我只需要在用户滑动到特定选项卡时调用它……可能有用:
onResume()
应该是正确的刷新位置,因为当您更改选项卡时,将显示ListView片段,因此此时应调用
onResume()
。感谢Gaurav,但它在onResume()中似乎没有任何作用。列表没有刷新…我是否遗漏了什么?当你滑动到选项卡时是否强制刷新?谢谢Adam,查看onResume()现在。查看我对原始帖子的更新,有没有什么想法我可能会出错?我很确定不赞成调用生命周期阶段。它们是自己发生的。也许可以打电话给你的片段管理器,用一个新实例替换你的片段?在选中的选项卡上的主活动中,只替换片段。如果你可以在你先创建一个片段,然后重新创建它来重复这个过程?
@Override
public void onTabSelected(Tab arg0, android.app.FragmentTransaction arg1) {
    // TODO Auto-generated method stub

Fragment frag = (Fragment) getSupportFragmentManager().findFragmentById(arg0.getPosition());

if (arg0.getPosition() == 1) {
    frag.onResume();
}
}
01-29 00:47:30.792: E/InputEventReceiver(2211): Exception dispatching input event.
01-29 00:47:30.792: E/MessageQueue-JNI(2211): Exception in MessageQueue callback: handleReceiveCallback
01-29 00:47:30.851: E/MessageQueue-JNI(2211): java.lang.NullPointerException
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.geronimosoft.autotracker.activities.MAINSCREEN_Activity.onTabSelected(MAINSCREEN_Activity.java:436)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:572)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.android.internal.app.ActionBarImpl.setSelectedNavigationItem(ActionBarImpl.java:358)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.geronimosoft.autotracker.activities.MAINSCREEN_Activity$1.onPageSelected(MAINSCREEN_Activity.java:138)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:567)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2015)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.View.dispatchTouchEvent(View.java:7384)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2205)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1940)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.View.dispatchPointerEvent(View.java:7564)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5399)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5370)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5493)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:182)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.os.MessageQueue.nativePollOnce(Native Method)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.os.MessageQueue.next(MessageQueue.java:132)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.os.Looper.loop(Looper.java:124)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at android.app.ActivityThread.main(ActivityThread.java:5103)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at java.lang.reflect.Method.invokeNative(Native Method)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at java.lang.reflect.Method.invoke(Method.java:525)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-29 00:47:30.851: E/MessageQueue-JNI(2211):   at dalvik.system.NativeStart.main(Native Method)
01-29 00:47:30.862: D/AndroidRuntime(2211): Shutting down VM
01-29 00:47:30.862: W/dalvikvm(2211): threadid=1: thread exiting with uncaught exception (group=0x41465700)
01-29 00:47:30.932: E/AndroidRuntime(2211): FATAL EXCEPTION: main
01-29 00:47:30.932: E/AndroidRuntime(2211): java.lang.NullPointerException
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.geronimosoft.autotracker.activities.MAINSCREEN_Activity.onTabSelected(MAINSCREEN_Activity.java:436)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:572)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.android.internal.app.ActionBarImpl.setSelectedNavigationItem(ActionBarImpl.java:358)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.geronimosoft.autotracker.activities.MAINSCREEN_Activity$1.onPageSelected(MAINSCREEN_Activity.java:138)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:567)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2015)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.View.dispatchTouchEvent(View.java:7384)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2205)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1940)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.View.dispatchPointerEvent(View.java:7564)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5399)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5370)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5493)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:182)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.os.MessageQueue.nativePollOnce(Native Method)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.os.MessageQueue.next(MessageQueue.java:132)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.os.Looper.loop(Looper.java:124)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at android.app.ActivityThread.main(ActivityThread.java:5103)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at java.lang.reflect.Method.invokeNative(Native Method)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at java.lang.reflect.Method.invoke(Method.java:525)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-29 00:47:30.932: E/AndroidRuntime(2211):     at dalvik.system.NativeStart.main(Native Method)