Avoid non-default constructors in fragments:use a default constructor plus Fragmentエラーの解決方法

1453 ワード

fragmentを作成すると、パッケージ中に次のエラーが発生する可能性があります.
Error:Error: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]
これは、fragmentの構築方法を再ロードしたためですが、画面が反転した場合など、fragmentが再作成されると、データが失われる可能性があります.
ソリューション1:@SuppressLint({"NewApi","ValidFragment"})
構造方法にこの注釈を加えれば、検察をしなくてもいいのですが、これはgoogleがお勧めしないやり方です
ソリューション2(推奨もしない):エラーを報告しない
    lintOptions {
        abortOnError false
    }
この項目に追加されたgradleファイルでは、このエラーを報告しなくてもいいですが、これは彼に報告させないだけで、実際には問題があるので、お勧めしません.
ソリューション3(推奨):newInstanceメソッドの作成
この方式は構造を用いてパラメータを伝達することを回避する
newInstanceメソッドの作成
	public static final SplashViewPagerFragment newInstance(int pid, String message)
	{
		SplashViewPagerFragment fragment = new SplashViewPagerFragment();
		Bundle bundle = new Bundle();
		bundle.putInt("pid",pid);
		bundle.putString("message", message);
		fragment.setArguments(bundle);

		return fragment ;
	}

書き換え
@Override
	public void onCreate(@Nullable Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		mMessage=getArguments().getString("message");
		mPid=getArguments().getInt("pid");

		
	}

fragmentインスタンスの作成
SplashViewPagerFragment splashViewPagerFragment=SplashViewPagerFragment.newInstance(1,"  ");

以上のような方法で問題を解決することができます.