使用Web Service响应更新ViewPager的片段

时间:2013-01-12 12:34:43

标签: android android-asynctask android-fragments android-viewpager

我是FragmentActivity,Fragment和ViewPager的新手。

我正在使用带有2个片段的FragmentActivity。

每个片段都使用与AsyncTask中的Web服务调用相同的数据。

现在我不想为每个片段调用两次Web服务。

相反,我的想法是使用FragmentActivity中的AsyncTask从Web服务获取数据。然后通知FragmentAdapter已收到数据。因此,Adapter应该更新Fragment的视图。

但我仍然坚持如何实现这一目标。如果有人建议我的方式或这样的例子,那将是很好的。感谢。

1 个答案:

答案 0 :(得分:1)

在后台启动任务,当收到结果时,通知像这样的片段

package com.example.myapplication2;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.ActionBarActivity;

public class MainActivity3 extends ActionBarActivity {


    private FragmentManager fragManager;
    private Fragment fragOne,fragTwo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    fragManager = getSupportFragmentManager();
    if((fragOne=fragManager.findFragmentById(R.id.frag_one))==null){
        fragOne = new FragOne();
        fragManager.beginTransaction()
                .add(R.id.container, fragOne )
                .commit();
    }
    if((fragTwo=fragManager.findFragmentById(R.id.frag_two))==null){
        fragTwo = new FragTwo();
        fragManager.beginTransaction()
                .add(R.id.container, fragTwo)
                .commit();
    }

    startTaskInBackground();

    }


    @Override
    public void onTaskComplete() {
    fragOne.onDataReceived();
    fragTwo.onDataReceived();
    }


}