【问题标题】:How to change the content on ViewPager Fragments?如何更改 ViewPager Fragments 上的内容?
【发布时间】:2014-03-11 21:31:03
【问题描述】:

我有一个显示列表的导航抽屉和一个显示内容的视图页面。当点击导航抽屉列表中的特定项目时,会为所有页面生成一个 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页面中的内容?

【问题讨论】:

  • 因此,当您点击导航项时,您希望为每个片段生成一个 URL 并将其传递给每个片段?

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


【解决方案1】:

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

    1234563您的每个片段都在为该消息类型注册一个广播接收器,当您收到意图时,获取 URL 就可以了。
  1. 如果 url 依赖于每个片段,则从片段生成 url。只是您需要知道用户何时从导航抽屉中按下项目。同样:当用户点击一个项目时,广播一条消息(可能包括选项),每个片段都会收到它并知道生成 URL。

有道理吗?

【讨论】:

  • 好吧,这是有道理的。我会尝试这种方法。
  • 试图实现它,没有奏效。意图意图 = new Intent(); intent.setAction("CONTENT_UPDATE"); intent.putExtra("CATEGORY", mCategoryTitles[position]); getApplicationContext().sendBroadcast(intent);
  • 什么不起作用?你收到每个片段中的广播了吗?可以记录吗?
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
相关资源
最近更新 更多