如何处理片段选项卡中的setOnPageChangeListener()

时间:2014-03-31 06:50:12

标签: android android-fragments tabs

在我的应用程序中,我有三个与<{3}}类似的片段标签。此外,我还有一个主要活动,而不是这三个标签。我的问题是当应用程序启动时,它已被选中第一个选项卡,并始终显示与其相关的片段。

但我需要在应用程序启动时显示主要活动,如果用户选择仅显示相关片段。如何处理这种情况?任何建议,将不胜感激。

这是标签片段代码示例: MainActivity.java

 @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainActivity);
    viewPager=(ViewPager) findViewById(R.id.fragment);
    actionBar=getActionBar();
    mAdapter=new TabPageAdapter(getSupportFragmentManager());
    viewPager.setAdapter(mAdapter);
    for(String tabName: tabs){            actionBar.addTab(actionBar.newTab().setText(tabName).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) {

                    }
                });

 }

修改

清单文件

<activity
            android:name="com.example.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

此处标签片段也在我的主要活动中。主要活动也有自己的布局。我在清单文件中添加了如上所述的LAUNCHER活动。这里发生的是当应用程序启动时,选项卡片段布局(第一个)显示始终没有MainActivity布局。我只有在用户选择它们时才需要显示这些标签片段。

2 个答案:

答案 0 :(得分:0)

在与片段挣扎之后,我终于找到了解决方案。我怀疑是否有更好的解决方案。如果有任何感觉,请在这里更新。希望这对面临同样问题的人有所帮助。

出现问题的原因是,虽然我在清单中定义了LAUNCHER活动,但同一活动包含片段选项卡。因此,总是选择默认选项卡,因此,片段布局始终可见,无法查看活动布局。所以我所做的是,xml of ViewPager即将消失。

android:visibility="gone"

然后在我的活动中,我创建了一个变量来检测应用是否第一次启动,而用户仍然没有选择任何标签。

 boolean isStart=true;

然后在onTabSelected()方法中检查isStart=false表示用户选择了该标签。然后我设置了viewPager to VISIBLE

答案 1 :(得分:0)

MainActivity中创建应用启动时打开的主显示屏。并在MainActivity创建按钮以strat包含片段选项卡的其他活动。并在清单文件中注册此新活动。如果用户有兴趣继续进行标签活动,那么他会打开,否则不会。