在https://github.com/chrisbanes/cheesesquare上找到示例代码。我创建了四个实例CheeseListFragment。我无法理解如何获得该课程的第三例和传递数据?特别是对第三个如何访问类的目的实例并传递数据?
public class MainActivity extends AppCompatActivity implements CheeseListFragment.OnDataPass {
Adapter adapter;
...
adapter = new Adapter(getSupportFragmentManager());
for (int i=0; i<4; i++){
adapter.addFragment(new CheeseListFragment(), items[i]);
}
...
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
onDataPass(String.valueOf(position)); // how send data to third instance of CheeseListFragment
static class Adapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
public Adapter(FragmentManager fm) {
super(fm);
}
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
}
}
public class CheeseListFragment extends Fragment {
List<News> lnews;
private RecyclerViewAdapter mRecyclerviewAdapter;
OnDataPass dataPasser;
...
protected String[] mDataset;
public interface OnDataPass {
public void onDataPass(String data);
}
@Override
public void onAttach(Activity a) {
super.onAttach(a);
dataPasser = (OnDataPass) a;
}
public void passData(String data)
dataPasser.onDataPass(data);
}
/////////////////// ////////////////////////////////////
Fragment fragment = adapter.getItem(2);
CheeseListFragment cheesyFragment = (CheeseListFragment) fragment;
cheesyFragment.onDataPass(...) // how pass data?
我想传递数据到目的片段fragment = adapter.getItem(2); CheeseListFragment cheesyFragment =(CheeseListFragment)片段;分段。 cheesyFragment.onDataPass(...) – mehelta
@mehelta修改我的答案,希望能回答你的问题的第二部分。 – user4989692