2016-05-07 9 views
0

Fistをオフにするには、一連のフラグメントクラスを初期化する必要があります。その後、 、私はいくつかのネットワークリクエストを行います。 すべてのデータがロードされた後、指定されたデータをActivityからFragmentに移送する必要がありますが、この手順についてはわかりません。次のようにアクティビティがデータの読み込みを完了した後、データをアクティビティからフラグメントに設定する方法

コードは次のとおりです。

private Class[] mFragmentClasses = {GoodDetailsFragment.class,GoodDetailsArgumentsFragment.class}; 
    mIndicator.setViewPager(mViewPager); 
    mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { 

     @Override 
     public int getCount() { 
      return mFragmentClasses.length; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      try { 
       return (Fragment) mFragmentClasses[position].newInstance(); 
      } catch (InstantiationException e) { 
       e.printStackTrace(); 
      } catch (IllegalAccessException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 
    }; 
    mViewPager.setAdapter(mAdapter); 

ので、どのように私はすぐにネットワーク件のデータがロードされるようフラグメントから来て件のデータを更新することができます。

+0

使用 'LocalBroadcastManager' .. –

答えて

3

ネットワーク要求が完了し、アクティビティがデータの処理を完了したら、interfaceを使用してフラグメントに渡すことができます。

活動:

public class MainActivity extends Activity 
{ 
    public interface onDataLoadedListener 
    { 
     public void onDataLoaded(String receivedData); 
    } 

    onDataLoadedListener onDataLoadedListener; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Fragment fragment = new MyFragment(); 
     onDataLoadedListener = fragment; 
    } 

    // Some method called when you receive the data 
    public void onDataReceived(String receivedData) 
    { 
     onDataLoadedListener.onDataLoaded(receivedData); 
    } 
} 

フラグメント:

public class MyFragment extends Fragment implements onDataLoadedListener 
{ 
    @Override 
    public void onDataLoaded(receivedData) 
    { 
     // Handle the received data accordingly 
    } 
} 
状況に完全に罰金合っ
+0

ご協力いただきありがとうございます。それは絶対に便利です – wislie

関連する問題