从android中的片段打开片段

从android中的片段打开片段,android,android-fragments,android-viewpager,android-fragmentactivity,Android,Android Fragments,Android Viewpager,Android Fragmentactivity,我有一个扩展到FragmentActivity的活动,它有4个片段。现在我想点击按钮打开fragment2,它出现在fragment1中。 简而言之,我想在单击按钮时从片段1切换到片段2。 我的代码是: 公共类SampleActivity扩展了FragmentActivity{ static ViewPager mViewPager; PagingAdapter TabAdapter; @Override protected void onCreate(Bundle savedInstance

我有一个扩展到FragmentActivity的活动,它有4个片段。现在我想点击按钮打开fragment2,它出现在fragment1中。 简而言之,我想在单击按钮时从片段1切换到片段2。 我的代码是: 公共类SampleActivity扩展了FragmentActivity{

static ViewPager mViewPager;
PagingAdapter TabAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TabAdapter = new PagingAdapter(getSupportFragmentManager(), this);

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(TabAdapter);
}
public class PagingAdapter extends FragmentPagerAdapter {

    private Context context;
    public PagingAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context = context;
    }

    @Override
    public Fragment getItem(int i) {
        switch(i){
        case 0:         
            return new Fragment1();
        case 1:
            return new Fragment2();
        case 2:
            return new Fragment3();
        case 3:
            return new Fragment4();
        }
        return null;
    }

    @Override
    public int getCount() {
        return 4;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch(position){
        case 0:
            return context.getString(R.string.page_tab_1);
        case 1:
            return context.getString(R.string.page_tab_2);
        case 2:
            return context.getString(R.string.page_tab_3);
        case 3:
            return context.getString(R.string.page_tab_4);
        }
        return "Fragment " + (position + 1);
    }
}

public class Fragment1 extends Fragment{
    Button btn_close = (Button) mydeals.findViewById(R.id.btn_close);
btn_all.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
    //Needs to open fragment2 here. 
});
}
我已经尝试使用id进行转换,但fragment4正在通过以下代码打开

ViewPager viewpager = DealsActivity.mViewPager;  
viewpager.setCurrentItem(getId());

Fragment1
布局中,在
按钮定义中添加属性
android:onClick=“buttonClickMethod”
。然后在活动中添加以下方法:

public void buttonClickMethod(View v) {
    // some code to execute after button click
    // ....
    // You can open fragment 2 here, like this :
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.LAYOUT_ID_FOR_FRAGMENT2, FRAGMENT2);
    ft.commit();
}

请注意,该方法的名称与在
android:onClick
属性中定义的名称相同。

我没有用于\u FRAGMENT2的布局\u ID\u。每个片段都有单独的xml文件。FRAGMENT2不是新的FRAGMENT2()?FRAGMENT2的
LAYOUT\u ID\u和
FRAGMENT2
分别是您的布局资源
ID
FRAGMENT2
类的实例。我只想给您举个例子!