从android中的片段打开片段
我有一个扩展到FragmentActivity的活动,它有4个片段。现在我想点击按钮打开fragment2,它出现在fragment1中。 简而言之,我想在单击按钮时从片段1切换到片段2。 我的代码是: 公共类SampleActivity扩展了FragmentActivity{从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
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
类的实例。我只想给您举个例子!