は私がプロジェクトに次のコードを見つけました(変数/クラス名が変更された):引数をこのようにしてFragmentに渡すことはできますか?
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;
}
プロジェクトは数週間のために生きてきたとpresenter
は、コード内でさらに(のparamsにアクセスしたとき夫婦NullPointerException
が報告されました)。
setArguments()
を使用するのが正しいことは分かっていますが、尋ねたい質問は次のとおりです。尖った線が問題になることはありますか?
私はAndroidが何らかの理由で再作成したフラグメントおよびparams
が原因呼び出されていない方法newInstance
にnull
になったことであるのだと思うことができる唯一のことは、このように、params
が設定されていません。
いいえできません。あなたは 'Bundle'にそれを渡す必要があります。 – Piyush
コードのいくつかの場所で 'Fragment()'のようなクラスをインスタンス化していて、 'newInstance'がなければ' params'は 'null'です。 –
@Piyush最後の段落を読んで、あなたが私の疑惑についてどう思いますか教えてください? – JonZarate