[解決済み] Fragment のコンストラクタが見つかりません。
質問
いくつかのデバイスで問題に直面し、クラッシュ解析でエラーが発生します。多くのユーザー デバイスがこの問題に直面していますが、私のデバイスでは問題なく動作しています。
Unable to start activity ComponentInfo{com.ox.outloks.new/com.ox.outloks.new.activities.MainDrawerActivity}: android.support.v4.app.Fragment$InstantiationException.InstantiationException.Com.ox.outloks.new.Fragment$Activity.Unable to instantiate fragment: Unable to instantiate fragment com.alchemative.outfitters.fragments.ProductsFragment: Fragment constructorが見つかりませんでした。
エラーはアクティビティにある行で発生しています。 super.onCreate(savedInstanceState)です。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ProductsFragmentのコンストラクタです。
@SuppressLint("ValidFragment")
public ProductsFragment(String id) {
categoryID = id;
}
どのように解決するのですか?
すべて
Fragment
クラスは
が必要です。
は、パブリックで引数のないコンストラクタを持たなければなりません。一般的に、ベストプラクティスは、単にどんなコンストラクタも全く定義せず、Javaがあなたのためにデフォルトコンストラクタを生成することに頼ることです。しかし、このような書き方もできます。
public ProductsFragment() {
// doesn't do anything special
}
フラグメントに追加情報が必要な場合、例えば
String id
のように、フラグメントに追加情報が必要な場合、一般的なパターンとして
newInstance()
を使用する静的なファクトリーメソッドです。
Bundle
を使用して、その情報をフラグメントに与えます。
public static ProductsFragment newInstance(String id) {
Bundle args = new Bundle();
args.putString("id", id);
ProductsFragment f = new ProductsFragment();
f.setArguments(args);
return f;
}
では
new ProductsFragment(id)
を呼び出すのではなく
ProductsFragment.newInstance(id)
. そして、フラグメントの内部では、id にアクセスするために
getArguments().getString("id")
.
引数バンドルを利用することで、(特別なコンストラクタを作成する代わりに)フラグメントは Android フレームワークによって破棄および再作成することができ(例:ユーザーが電話を回転させた場合)、必要な情報(ID)は持続されます。
関連
-
[解決済み] FragmentでonActivityResultが呼び出されない
-
[解決済み] 新しいAndroid Fragmentをインスタンス化するためのベストプラクティス
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] 複数のフィルタを持つBroadcastReceiverか、複数のBroadcastReceiverか?
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] Android: xml リソースからの整数値
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] FABアイコンの色を設定する