调用片段和传递参数

时间:2014-10-14 00:07:23

标签: java android android-fragments

我有一个初始化的片段:

    public static final PageFragment newInstance(int id,long stage_count){
    PageFragment fragment=new PageFragment();
    final Bundle args = new Bundle(2);
    args.putInt("EXTRA_ID", id);
    args.putLong("EXTRA_COUNT", stage_count);
    fragment.setArguments(args);

    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.id = getArguments().getInt("EXTRA_ID");
    this.stage_count = getArguments().getLong("EXTRA_COUNT");
}

我的问题是我怎么称呼它?例如,我想实例化这个片段并传递这两个参数。我经常这样做:

PageFragment fragment=new PageFragment(1,1);

但现在我该怎么做呢?

4 个答案:

答案 0 :(得分:1)

尝试:

PageFragment fragment = PageFragment.newInstance(1,1);

答案 1 :(得分:0)

实际上,如果您扩展Fragment并声明任何构造函数,您将收到警告 因为当系统恢复片段时(例如在配置更改时),它会自动恢复你的包。 从您的角度来看,可以在构造函数中传递参数。

但是,如果片段在带有参数的构造函数中实例化,则不会恢复该片段

答案 2 :(得分:0)

常见的模式是在片段子类中创建一个名为newInstance()的静态方法。它充当构造函数并封装创建参数Bundle并调用setArguments()

由于设计原因,您无法通过常规构造函数传递参数。

答案 3 :(得分:0)

这应该为你做。

Pagefragment pageFragment = PageFragment.newInstance(value1, value2);