3

FragmentActivity、Fragment、ViewPager は初めてです。

FragmentActivity を 2 つの Fragments で使用しています。

各フラグメントは、AsyncTask の Web サービス呼び出しから取得する同じデータを使用しています。

ここで、フラグメントごとに Web サービスを 2 回呼び出したくありません。

むしろ、FragmentActivity で AsyncTask を使用して Web サービスからデータを取得し、データが受信されたことを FragmentAdapter に通知するというのが私の考えです。したがって、アダプターは両方のフラグメントのビューを更新する必要があります。

しかし、私はこれを達成する方法にこだわっています。誰かが私に方法やこのような例を提案してくれたら素晴らしいでしょう. ありがとう。

4

1 に答える 1

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


}
于 2013-11-18T13:43:42.537 に答える