如何从另一个活动onClick打开特定的片段

时间:2014-08-09 12:09:56

标签: android android-fragments

我在viewpager中有4个片段(Easy,Normal,Hard,Advance),我只想在其他活动的onClick上打开Normal片段。

PageAdapter:

public class PagerAdapter extends FragmentPagerAdapter {

private List<Fragment> fragments;
public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
    super(fm);
    this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
    return this.fragments.get(position);
}
@Override
public int getCount() {
    return this.fragments.size();
}
}

FragmentActivity:

public class level_selection extends FragmentActivity {

private PagerAdapter mPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.level_selection);
    //initialsie the pager
    this.initialisePaging();
}

private void initialisePaging() {

    List<Fragment> fragments = new Vector<Fragment>();
    fragments.add(Fragment.instantiate(this, Easy.class.getName()));
    fragments.add(Fragment.instantiate(this, Normal.class.getName()));
    fragments.add(Fragment.instantiate(this, Hard.class.getName()));
    fragments.add(Fragment.instantiate(this, Advance.class.getName()));
    this.mPagerAdapter  = new PagerAdapter(super.getSupportFragmentManager(), fragments);
    //
    ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
    pager.setAdapter(this.mPagerAdapter);
}
}

基于上面的代码,任何人都可以指导我如何修改它以允许onClick从其他Activity打开片段“Normal”?

最诚挚的问候,

2 个答案:

答案 0 :(得分:2)

使pager成为一个类字段,然后使用onClick方法:

 pager.setCurrentItem(1);

这假设你的正常&#34; Fragment List中始终有索引1(来自您的代码,实际上是索引1)

答案 1 :(得分:1)

请尝试这种方式,希望这有助于您解决问题。

ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
pager.setCurrentItem(1);

List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, Normal.class.getName()));    
fragments.add(Fragment.instantiate(this, Easy.class.getName()));
fragments.add(Fragment.instantiate(this, Hard.class.getName()));
fragments.add(Fragment.instantiate(this, Advance.class.getName()));