将当前活动的数据分发到其上的片段

问题描述 投票:1回答:1

我有一个包含2个标签/片段的活动。在我的活动中,我有一个JSON请求,并从API获取一些数据。如何在获取数据后将数据分发到我的当前活动中包含片段的选项卡?

码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);

    mInflater = LayoutInflater.from(this);

    queue = Volley.newRequestQueue(this);

    picture = (Picture) getIntent().getSerializableExtra("picture");
    pictureId = picture.getPictureId();

    setUpUI();
    getPictureDetails(pictureId);

    tabLayout = findViewById(R.id.detailtabs);
    viewPager = findViewById(R.id.detailviewpager);
    adapter = new ViewPagerAdapter(getSupportFragmentManager());

    adapter.AddFragment(new FragmentDetails(), "Details");
    adapter.AddFragment(new FragmentReviews(), "Reviews");

    viewPager.setAdapter(adapter);
    tabLayout.setupWithViewPager(viewPager);
}
android json android-fragments android-activity android-fragmentactivity
1个回答
0
投票

创建一个像下面这样的interface

public interface DataDistributor {
    public void sendData(YOUR_DATA_TYPE data)
}

你所有的fragments都必须像下面这样实现这个interface

public class YOUR_FRAGMENT extends Fragment implements DataDistributor {
   ...

   @Override
   public void sendData(YOUR_DATA_TYPE data){
       //here you get your distributed data in fragment
   }
}

你的adapter必须有instancesfragments implements DataDistributor interfacearrayList的形式(我假设片段实例变量名称列表为fragments)只需在你的method类中写下adapter并在你希望将数据分发到片段(通过从活动中调用adapter.distibuteData(data)方法)

public void distributeData(YOUR_DATA_TYPE data){
    if(fragments != null && !fragments.isEmpty()){
        for(Fragment fragment: fragments){
            ((DataDistributor) fragment).sendData(data)
        } 
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.