【问题标题】:How to handle setOnPageChangeListener() in fragment tabs如何在片段选项卡中处理 setOnPageChangeListener()
【发布时间】:2014-03-31 06:50:12
【问题描述】:

在我的应用程序中,我有三个类似于this screen片段标签。除了这三个选项卡之外,我还有一个主要活动。我的问题是当应用程序启动时,它已经选择了第一个选项卡并始终显示与其相关的片段。

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

这是标签片段代码示例: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 布局。仅当用户选择它们时,我才需要显示这些选项卡片段。

【问题讨论】:

  • 您是否对清单文件进行了更改?
  • 不,我没有为此更改清单中的任何内容。
  • 注册你想在应用启动时启动的活动作为启动器活动,然后是这个片段活动。并从主要活动开始此选项卡活动。
  • 发布您的清单文件。并在你的问题中写下活动的名称。
  • @KanwaljitSingh 我用清单文件段更新了我的问题,并在那里进行了更多解释。我已经将 android.intent.category.LAUNCHER 添加到清单文件中。问题是我的标签片段也放在同一个活动中。

标签: android android-fragments tabs


【解决方案1】:

在与碎片斗争之后,我终于找到了解决方案。我怀疑是否有更好的解决方案。如果有什么可以在这里更新。希望这对面临同样问题的人有所帮助。

出现问题的原因是,尽管我在清单中定义了 LAUNCHER 活动,但相同的活动包含片段选项卡。所以总是选择默认选项卡,因此总是片段布局可见并且看不到活动布局。所以我所做的是,在xml of ViewPager 中设置为消失。

android:visibility="gone"

然后在我的活动中我创建了一个变量来检测应用程序是否第一次启动并且用户仍然没有选择任何选项卡。

 boolean isStart=true;

然后在onTabSelected() 方法中选中isStart=false 表示该选项卡是由用户选择的。然后我设置viewPager to VISIBLE

【讨论】:

  • 嘿,谢谢您的支持。我用上面的方法来做到这一点。我不知道有没有其他更好的方法来做到这一点。如果您有任何解决方案,请告诉我。
【解决方案2】:

MainActivity 创建应用启动时打开的主显示。并在MainActivity 创建按钮来分层包含片段选项卡的其他活动。并在清单文件中注册这个新活动。如果用户有兴趣在这种情况下进行标签活动,他会打开,否则不会。

【讨论】:

  • 不可能改变设计。标签片段应该在主要活动中。
  • 好的,然后创建一个用于启动屏幕的 xml 和活动,并将该活动注册为启动器活动,并在活动中提供一个按钮来启动 MainActivity。
猜你喜欢
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多