[解決済み] Android ViewModel にはゼロ引数のコンストラクタがない
質問
私は この のドキュメントを参照して、LiveDataとViewModelについて勉強しています。 ドキュメントでは、ViewModelクラスは、このようなコンストラクタを持っています。
public class UserModel extends ViewModel {
private MutableLiveData<User> user;
@Inject UserModel(MutableLiveData<User> user) {
this.user = user;
}
public void init() {
if (this.user != null) {
return;
}
this.user = new MutableLiveData<>();
}
public MutableLiveData<User> getUser() {
return user;
}
}
しかし、このコードを実行すると、例外が発生します。
final UserViewModelviewModel = ViewModelProviders.of(this).get(UserViewModel.class);
原因:java.lang.RuntimeException: クラスUserViewModelのインスタンスを作成できません。 原因:java.lang.InstantiationException: java.lang.Class はゼロ引数のコンストラクタを持ちません。
どのように解決するのですか?
のサブクラスを初期化する際に
ViewModel
を使って
ViewModelProviders
を使用すると、デフォルトでは
UserModel
クラスがゼロ引数のコンストラクタを持っていることを期待します。
この場合、コンストラクタには引数
MutableLiveData<User> user
.
これを解決する一つの方法は、デフォルトの引数なしのコンストラクタを
UserModel
.
そうでない場合、ViewModel クラスに 0 以外の引数のコンストラクタを持たせたい場合は、カスタムの
ViewModelFactory
クラスを作成し、ViewModel のインスタンスを初期化する必要があります。
ViewModelProvider.Factory
インターフェイスを実装しています。
私はまだ試していませんが、これに関する優れたGoogleのサンプルへのリンクはこちらです。 github.com/googlesamples/android-architecture-components . 具体的には、このクラスをチェックしてください。 GithubViewModelFactory.java を、そしてこのクラス GithubViewModelFactory.kt を、対応するKotlinのコードに使用します。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] HttpPostによる画像送信
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
-
[解決済み] WhatsAppでメッセージを送信する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] ViewPagerのアイテムを強制的に再インスタンス化する方法 [重複].
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] Android Studioの「未実装メソッドの追加」機能
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較
-
[解決済み] FABアイコンの色を設定する
-
[解決済み] Google Play ストア内部テストのロールアウトが開始できない
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理