1. ホーム
  2. android

[解決済み] フラグメントで非デフォルトのコンストラクタを避けたい理由は?

2022-04-22 04:46:14

質問

でアプリを作成しています。 Fragments で、そのうちの1つで、デフォルトでないコンストラクタを作成したところ、このような警告が表示されました。

Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead

なぜこれが良くないのか、誰か教えてください。

また、どのようにしたらこれを実現できるかを提案してもらえますか。

public static class MenuFragment extends ListFragment {
    public ListView listView1;
    Categories category;

    //this is my "non-default" constructor
    public MenuFragment(Categories category){
        this.category = category;
    }....

デフォルトでないコンストラクタを使用せずに?

解決方法は?

バンドルオブジェクトを作成し、データを挿入します。 Category オブジェクトを作成します)。注意することは、シリアライズ可能なオブジェクトでない限り、このオブジェクトを直接バンドルに渡すことはできないことです。 フラグメントの中でオブジェクトを作り、バンドルにはidなどだけを入れておくと良いと思います。これがバンドルの作成とアタッチのコードです。

Bundle args = new Bundle();
args.putLong("key", value);
yourFragment.setArguments(args);

その後、フラグメントアクセスデータで。

Type value = getArguments().getType("key");

以上です。