【问题标题】:Open fragment from a fragment in android从android中的片段打开片段
【发布时间】:2016-08-15 18:04:59
【问题描述】:

我有一个延伸到 FragmentActivity 的 Activity,它有 4 个片段。我现在想在 fragment1 中的按钮单击时打开 fragment2。 简而言之,我想在单击按钮时从片段 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());

【问题讨论】:

    标签: android android-fragments android-viewpager android-fragmentactivity


    【解决方案1】:

    Fragment1 布局中,在Button 定义中添加属性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 属性中定义的名称相同。

    【讨论】:

    • 我没有 LAYOUT_ID_FOR_FRAGMENT2。每个片段都有单独的 xml 文件。 FRAGMENT2 不会是新的 FRAGMENT2() 吗?
    • LAYOUT_ID_FOR_FRAGMENT2FRAGMENT2 分别是您的布局资源 id 和您的 Fragment2 类的实例。我只是想给你举个例子!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多