【问题标题】:Implement intent into FragmentStatePagerAdapter在 FragmentStatePagerAdapter 中实现意图
【发布时间】:2017-03-09 18:01:52
【问题描述】:

我正在尝试实现选项卡片段。如果我在想要开始新活动时触摸一个选项卡。在这种情况下,我使用意图开始新活动,但它不起作用。如何在这里添加意图。

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {

    switch (position) {

        case 0:
            Intent intent = new Intent(new MainActivity(), Alarm.class);
            startActivity(intent);

        default:
            return null;
    }
}

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

【问题讨论】:

    标签: android android-fragments android-intent


    【解决方案1】:

    如果我在想要开始新活动时触摸一个标签

    FragmentPagerAdapter 显示来自getItem() 方法的片段。它不会启动活动。

    @Override
    public Fragment getItem(int position) {
        Fragment f = null;
        switch (position) {
            case 0:
                f = new AlarmFragment();
                break;
            default:
                break;  // returning null could cause errors, though
    
        }
        return f;
    }
    

    如果你真的想要这个功能,虽然

    1) new Intent() 采用 Context,而不是明确的 Activity

    2) 永远不要创建new SomeActivity(),因为它是不受管理的,你会遇到问题。

    与任何其他适配器一样,您可以传递Context

    private Context mContext;
    public PagerAdapter(Context context, FragmentManager fm, int NumOfTabs) {
        super(fm);
        this.mContext = context;
        this.mNumOfTabs = NumOfTabs;
    }
    

    然后使用它

    Intent intent = new Intent(this.mContext, Alarm.class);
    

    【讨论】:

      【解决方案2】:

      你确定吗? PagerAdapter 更改 ViewPager 中的 Fragments。 如果您想在标签项单击时开始活动,您需要一个TabLayout。 但是如果你想改变页面,你必须在 getItem(int position) 方法中返回一个 Fragment

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多