我有一个初始化的片段:
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);
但现在我该怎么做呢?
答案 0 :(得分:1)
尝试:
PageFragment fragment = PageFragment.newInstance(1,1);
答案 1 :(得分:0)
实际上,如果您扩展Fragment并声明任何构造函数,您将收到警告 因为当系统恢复片段时(例如在配置更改时),它会自动恢复你的包。 从您的角度来看,可以在构造函数中传递参数。
但是,如果片段在带有参数的构造函数中实例化,则不会恢复该片段
答案 2 :(得分:0)
常见的模式是在片段子类中创建一个名为newInstance()
的静态方法。它充当构造函数并封装创建参数Bundle
并调用setArguments()
。
由于设计原因,您无法通过常规构造函数传递参数。
答案 3 :(得分:0)
这应该为你做。
Pagefragment pageFragment = PageFragment.newInstance(value1, value2);