如何更改ViewPager Fragments上的内容?

时间:2014-03-11 21:31:04

标签: android android-fragments android-viewpager navigation-drawer

我有一个导航抽屉,显示一个列表和一个显示内容的viewpager。当单击导航抽屉列表中的特定项目时,将为所有页面生成URL,并且该URL应导致视图寻呼机内容的更改。导航抽屉和viewpager在同一个Activity中。视图分页器中的片段具有从服务器检索内容的URL。我怎么能实现它?

部分代码如下:

活动类

public void View_pager() {

    viewpager = (ViewPager) findViewById(R.id.pager);
    actionbar = getActionBar();

    adapter = new TabsPagerAdapter(getSupportFragmentManager());
    viewpager.setAdapter(adapter);

    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    for (String tabs_name : tabs) {
        actionbar.addTab(actionbar.newTab().setText(tabs_name)
                .setTabListener(this));
    }

    viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            actionbar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
}

viewpager中有三个页面。适配器如下:

适配器

public class TabsPagerAdapter extends FragmentPagerAdapter {

public TabsPagerAdapter(
        android.support.v4.app.FragmentManager fragmentManager) {
    super(fragmentManager);

}

@Override
public Fragment getItem(int index) {

    switch (index) {
    case 0:
        return new Page1();
    case 1:
        return new Page2();
    case 2:
        return new Page3();
    }
    return null;
}

@Override
public int getCount() {
    return 3;
}

}

页面包含所有URL字段,用于从包含数据的服务器中提取json。简而言之,问题是当点击导航抽屉中的列表项时,如何更改viewpager页面中的内容?

1 个答案:

答案 0 :(得分:1)

您无法直接引用每个页面片段。所以你可以这样做:

  1. 如果您有相同的网址或这些网址是随机的,哪个网址在哪里无关紧要,请生成它们并发送广播消息,您将把URL放在广播意图中。您的每个片段都在为该消息类型注册一个广播接收器,当您收到该意图后,请获取该URL并在那里获得它。

  2. 如果网址依赖于每个片段,请从片段生成网址。只需要知道用户何时按下导航抽屉中的项目。再说一次:当用户点击某个项目时,广播一条消息(可能包括该选项),每个片段都会收到该消息并知道生成该URL。

  3. 有道理吗?