参数是否可以像这样传递给片段?
问题描述:
我发现下面的代码放在一个项目(变量/类名称更改):参数是否可以像这样传递给片段?
private FragmentParams params;
public static MyFragment newInstance(FragmentParams params) {
MyFragment fragment = new MyFragment();
fragment.params = params; // <- Manually setting params in fragment class
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_fragment, container, false);
ButterKnife.bind(this, view);
/* The following line initializes a class responsible for the user
interface. The params are used for that purpose. However, out of
nowhere, the params where null 2 times.*/
presenter.setParams(params);
return view;
}
该项目已住了几个星期和一对夫妇NullPointerException
报道当presenter
代码访问的PARAMS(进一步)。
我知道正确的方法是使用setArguments()
,但我想问的问题是:可以指出的线有问题吗?
我能想到的唯一的东西,那Android的出于某种原因重新创建的片段和params
成为null
由于方法newInstance
不会被调用,因此没有设置params
。
答
您也可以尝试将fragment retain instance state设置为true,无论何时重新创建活动,它都会将Fragment的实例保留在Fragment Manager中。
https://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)
不可以。你必须把它传递给'Bundle'。 – Piyush
也许你是在代码的某个地方实例化类,如'Fragment()',而不是'newInstance',那里的参数是'null' –
@Piyush你能读一下最后一段,告诉我你对我怀疑的看法? – JonZarate