如何从片段活动中启动特定片段

时间:2014-04-30 11:18:18

标签: android fragment android-fragmentactivity

我有片段问题,并在开始活动后直接调用它。

我有一个包含三个片段的片段活动。 我可以通过从左到右,从右到左或在标签上滑动来选择片段。

但是现在我喜欢用片段No.0开始活动。 我想从1号或2号片段开始。

我怎么能意识到这一点?

3 个答案:

答案 0 :(得分:0)

在Intent中添加一个额外的内容,指定您想要的片段,然后检查onCreate()内的Intent。如果索引足够,那么你可以这样做:

Intent intent = new Intent(this, ActivityWithFragments.class);
intent.putExtra("start_index", 2);
startActivity(intent);

然后在你的活动中:

@Override
protected void onCreate(Bundle saved) {
    super.onCreate(saved);

    /* normal onCreate code: setContentView, findViewById, etc...*/

    final Intent intent = getIntent();
    int startIndex = intent.getIntExtra("start_index", 0);
    // use startIndex to show the appropriate fragment
}

答案 1 :(得分:0)

您可以使用setCurrentItem()

    myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), this);
    viewPager.setAdapter(myPagerAdapter);
    viewPager.setCurrentItem(1); // 1 for page No. 1

答案 2 :(得分:0)

是的,非常感谢你。

就是这样。

我需要更多时间来了解代码的确切内容以及我如何实现新部分。

但现在它运行良好,做我喜欢的事情。 : - )

对于其他感兴趣的人,我会在下面提供一份代码。

package com.example.packagename;

import android.os.Build;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.content.SharedPreferences;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

public class Main_Activity extends FragmentActivity
{
    ViewPager viewPager;

    PagerAdapterSection sectionsAdapter;

    PagerAdapterTab tabAdapter;
    ActionBar actionBar;

    private SharedPreferences spActivityLaunch;
    private SharedPreferences.Editor spEditorActivityLaunch;
    private int startFragmentIndex;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        this.spActivityLaunch = this.getSharedPreferences("ActivityLaunchSettings", 0);
        this.startFragmentIndex = spActivityLaunch.getInt("FragmentNo", 0);

        if(Build.VERSION.SDK_INT >= 11)
        {
            setupTabsUpSDK11();
        }
        else
        {
            setupTabsLowerSDK11();
        }
    }

    @SuppressLint("NewApi")
    private void setupTabsUpSDK11()
    {
        setContentView(R.layout.main_layout);

        tabAdapter = new PagerAdapterTab(getSupportFragmentManager());
        viewPager = (ViewPager)findViewById(R.id.pager);
        viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()
            {
                @Override
                public void onPageSelected(int position)
                {
                    actionBar = getActionBar();
                    actionBar.setSelectedNavigationItem(position);

                    spEditorActivityLaunch = spActivityLaunch.edit();
                    spEditorActivityLaunch.putInt("FragmentNo", position);
                    spEditorActivityLaunch.commit();
                }
            });
        viewPager.setAdapter(tabAdapter);

        actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.TabListener tabListener = new ActionBar.TabListener()
        {
            @Override
            public void onTabReselected(android.app.ActionBar.Tab tab, FragmentTransaction ft) 
            {
            }
            @Override
            public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
            {
                viewPager.setCurrentItem(tab.getPosition());
            }
            @Override
            public void onTabUnselected(android.app.ActionBar.Tab tab, FragmentTransaction ft) 
            {
            }
        };
        actionBar.addTab(actionBar.newTab().setText("Fragment1").setTabListener(tabListener));
        actionBar.addTab(actionBar.newTab().setText("Fragment2").setTabListener(tabListener));
        actionBar.addTab(actionBar.newTab().setText("Fragment3").setTabListener(tabListener));

        viewPager.setCurrentItem(startFragmentIndex);
    }

    private void setupTabsLowerSDK11()
    {
        setContentView(R.layout.main_layout_lower_version);

        sectionsAdapter = new PagerAdapterSection(getSupportFragmentManager());
        viewPager = (ViewPager) findViewById(R.id.pager);

        viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()
        {
            @Override
            public void onPageSelected(int position)
            {
                spEditorActivityLaunch = spActivityLaunch.edit();
                spEditorActivityLaunch.putInt("FragmentNo", position);
                spEditorActivityLaunch.commit();
            }
        });

        viewPager.setAdapter(sectionsAdapter);

        viewPager.setCurrentItem(this.startFragmentIndex);
    }
}