我有一个包含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);
}
创建一个像下面这样的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
必须有instances
的fragments
implements
DataDistributor
interface
以array
或List
的形式(我假设片段实例变量名称列表为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)
}
}
}