Instanz von ViewModel in Android kann nicht erstellt werden

MaskedCarrot:

Hallo, ich bin neu in Android und habe versucht, MVVM zu lernen, aber ich kann nicht herausfinden, warum ich den Fehler habe, dass keine Instanz der viewmodel-Klasse erstellt werden kann:

Dies sind die Fehler, die ich bekomme:

2020-06-29 12:30:26.293 15174-15174/com.carrot.roomdatabase E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.carrot.roomdatabase, PID: 15174
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.carrot.roomdatabase/com.carrot.roomdatabase.MainActivity}: java.lang.RuntimeException: Cannot create an instance of class com.carrot.roomdatabase.ViewModel
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3388)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3527)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2123)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7710)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
     Caused by: java.lang.RuntimeException: Cannot create an instance of class com.carrot.roomdatabase.ViewModel
        at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:221)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)
        at com.carrot.roomdatabase.MainActivity.onCreate(MainActivity.java:31)
        at android.app.Activity.performCreate(Activity.java:7820)
        at android.app.Activity.performCreate(Activity.java:7809)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1318)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3363)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3527) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2123) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7710) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 
     Caused by: java.lang.InstantiationException: java.lang.Class<com.carrot.roomdatabase.ViewModel> has no zero argument constructor
        at java.lang.Class.newInstance(Native Method)
        at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:219)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187) 
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150) 
        at com.carrot.roomdatabase.MainActivity.onCreate(MainActivity.java:31) 
        at android.app.Activity.performCreate(Activity.java:7820) 
        at android.app.Activity.performCreate(Activity.java:7809) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1318) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3363) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3527) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2123) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7710) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 
2020-06-29 12:30:26.304 15174-15174/? I/Process: Sending signal. PID: 15174 SIG: 9

Unten sind meine Klassen

MainActivity.java-Klasse:


public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private recycleViewAdapter adapter;
    private ViewModel viewModel;
    private List<NotesEntity> notesEntityList = new ArrayList<>();
    private FloatingActionButton btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewModel = new ViewModelProvider(this).get(ViewModel.class);
        viewModel.getAllNotes().observe(this, new Observer<List<NotesEntity>>() {
            @Override
            public void onChanged(List<NotesEntity> notesEntities) {
                Toast.makeText(MainActivity.this, "onChanged", Toast.LENGTH_SHORT).show();
                adapter.notifyDataSetChanged();
            }
        });

        btn = findViewById(R.id.floatingActionButton);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this , AddNote.class));
            }
        });
        init();
    }
    private void init(){
        adapter = new recycleViewAdapter(notesEntityList);
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
    }
}

ViewModel.java-Klasse:

public class ViewModel extends AndroidViewModel {
    private Repository repository;
    private LiveData<List<NotesEntity>> allNotes;
    public ViewModel(@NonNull Application application) {
        super(application);
        repository = new Repository(application);
        allNotes = repository.getNotes();
    }

    public void insertThis(NotesEntity notesEntity){
        repository.Insert(notesEntity);
    }
    public void deleteThis(NotesEntity notesEntity){
        repository.Delete(notesEntity);
    }

    public LiveData<List<NotesEntity>> getAllNotes(){
        return allNotes;
    }
}

Kann mir bitte jemand helfen, herauszufinden, was ich falsch mache? Danke dir.

Vishnu:

Initialisieren Sie ViewModel wie folgt. Sie müssen ViewModelFactory auch mit dem ViewModelProvider-Konstruktor übergeben.

viewModel = new ViewModelProvider(this, new ViewModelProvider.AndroidViewModelFactory(getApplication())).get(ViewModel.class);

Hoffe das hilft.......

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

JsonMappingException: Instanz von kann nicht erstellt werden

Instanz von - Jackson kann nicht erstellt werden

Instanz von AndroidViewModel kann nicht erstellt werden

Aktivität kann nicht geöffnet werden: Instanz von Android View Model kann nicht erstellt werden

Instanz der ViewModel-Klasse kann nicht erstellt werden

Instanz des Viewmodel-Hilfs kann nicht erstellt werden

Es kann keine Instanz von benutzerdefiniertem ViewModel erstellt werden

In Android MVVM kann keine Instanz der Klasse ViewModel erstellt werden

Instanz der ViewModel-Klasse kann nicht erstellt werden (Aktivität ComponentInfo kann nicht gestartet werden)

Instanz von MainViewModel kann nicht mit Hilt erstellt werden

Instanz von JwtClaimsBuilder in Quarkus-Anwendung kann nicht erstellt werden

Eine abgeleitete Instanz von Num kann nicht erstellt werden

Android - Fehler "Instanz von kann nicht erstellt werden (obwohl mindestens eine Erstellung vorhanden ist)" mit Retrofit

Gcloud-Instanz kann nicht erstellt werden

SUM in Room - Instanz innerhalb der Klasse ViewModel error-Java kann nicht erstellt werden

Bei Verwendung der Jetpack Compose-Navigation kann keine Instanz von viewmodel erstellt werden

Es kann keine Instanz der Klasse ViewModel kotlin erstellt werden

Es kann keine Instanz der Klasse ViewModel erstellt werden

Konnte JSON nicht lesen: Instanz von `java.util.LinkedHashMap` kann nicht erstellt werden

ViewModel kann nicht erstellt und initialisiert werden

Android kann nicht erstellt werden

Überwinde "Instanz von InterfaceClass kann nicht erstellt werden", ohne das übergeordnete Element anzudeuten

Instanz von `javax.naming.Name` in jackson kann nicht erstellt werden

Jackson.InvalidDefinitionException: Instanz von java.time.OffsetDateTime in JUnit @BeforeEach kann nicht erstellt werden

Spring Boot - Jersey Client - Jackson Instanz von `java.time.Instant` kann nicht erstellt werden

Eine abgeleitete Instanz von MonadTrans für newtype kann nicht erstellt werden

JSON-Analysefehler: Instanz von "com.example.greetapp.domain.User" kann nicht erstellt werden

JSON: InvalidFormatException: Instanz von int kann nicht aus String-Wert erstellt werden

Instanz von IntentResponse kann nicht erstellt werden. Das validierte Objekt ist null