Avoid non-default constructors in fragments:use a default constructor plus Fragmentエラーの解決方法
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(推奨もしない):エラーを報告しない
ソリューション3(推奨):newInstanceメソッドの作成
この方式は構造を用いてパラメータを伝達することを回避する
newInstanceメソッドの作成
書き換え
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," ");
以上のような方法で問題を解決することができます.