アクティビティを開くことができません:Androidビューモデルのインスタンスを作成できません

Davin Seju

Android View ModelとLiveDataを使用して、バーコードをスキャンし、その情報をRoomDatabaseに取り込むアプリを作成しています。これがエラーメッセージです

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.davin.scoutingapp2019/com.example.davin.scoutingapp2019.DataDisplay}: java.lang.RuntimeException: Cannot create an instance of class com.example.davin.scoutingapp2019.TeamViewModel
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6123)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
 Caused by: java.lang.RuntimeException: Cannot create an instance of class com.example.davin.scoutingapp2019.TeamViewModel
    at android.arch.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:207)
    at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134)
    at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102)
    at com.example.davin.scoutingapp2019.DataDisplay.onCreate(DataDisplay.java:30)
    at android.app.Activity.performCreate(Activity.java:6672)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724) 
    at android.app.ActivityThread.-wrap12(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6123) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance0(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
    at android.arch.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:199)
    at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134) 
    at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102) 
    at com.example.davin.scoutingapp2019.DataDisplay.onCreate(DataDisplay.java:30) 
    at android.app.Activity.performCreate(Activity.java:6672) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724) 
    at android.app.ActivityThread.-wrap12(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6123) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.example.davin.scoutingapp2019.TeamDAO com.example.davin.scoutingapp2019.TeamsDatabase.teamDAO()' on a null object reference
    at com.example.davin.scoutingapp2019.TeamRepository.<init>(TeamRepository.java:15)
    at com.example.davin.scoutingapp2019.TeamViewModel.<init>(TeamViewModel.java:15)
    at java.lang.reflect.Constructor.newInstance0(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
    at android.arch.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:199) 
    at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134) 
    at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102) 
    at com.example.davin.scoutingapp2019.DataDisplay.onCreate(DataDisplay.java:30) 
    at android.app.Activity.performCreate(Activity.java:6672) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724) 
    at android.app.ActivityThread.-wrap12(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6123) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 

これはAndroidViewModelクラスです

package com.example.davin.scoutingapp2019;

import android.app.Application;
import android.arch.lifecycle.AndroidViewModel;
import android.arch.lifecycle.LiveData;

import java.util.List;

public class TeamViewModel extends AndroidViewModel {
    private TeamRepository mRepository;
    private LiveData<List<Team>> mAllData;

    public TeamViewModel(Application application) {
        super(application);
        mRepository = new TeamRepository(application);
        mAllData = mRepository.getAllWords();
    }


    public LiveData<List<Team>> getAllTeams() {
        return mAllData;
    }

    public void insert(Team team) {
        mRepository.insert(team);
    }


}

これは、TeamViewModelのインスタンスを持つクラス/アクティビティDataDisplayです。

package com.example.davin.scoutingapp2019;

import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;

import java.util.List;

public class DataDisplay extends AppCompatActivity {


    private TeamViewModel teamViewModel;
    public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_data_display);
        RecyclerView recyclerView = findViewById(R.id.recyclerview);
        final TeamListAdapter adapter = new TeamListAdapter(this);
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        teamViewModel = ViewModelProviders.of(this).get(TeamViewModel.class);
        teamViewModel.getAllTeams().observe(this, new Observer<List<Team>>() {
            @Override
            public void onChanged(@Nullable final List<Team> teams) {
                // Update the cached copy of the words in the adapter.
                adapter.setTeams(teams);
            }
        });
    }




    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
            Destring destring=new Destring(data.getStringExtra("str"));
            Team newTeam= new Team(destring.getTeamNumber(),destring.getPosition(),destring.getSandstorm("hab line"),destring.getSandstorm("cargo balls"),destring.getSandstorm("cargo hatches"),destring.getSandstorm("rocket balls"),destring.getSandstorm("rocket hatches"),destring.getTeleop("cargo balls"),destring.getTeleop("cargo hatches"),destring.getTeleop("rocket balls"),destring.getTeleop("rocket hatches"),destring.getRocketRole(),destring.getClimberRole(),destring.getOverallRole(),destring.getOtherComments());

            teamViewModel.insert(newTeam);
        } else {
            Toast.makeText(
                    getApplicationContext(),
                    R.string.empty_not_saved,
                    Toast.LENGTH_LONG).show();
        }
    }






}

この質問は別の質問に似ていますが、TeamViewModelのコンストラクターにパラメーターが1つしかありません。

残りのコードはgithubにあります

ありがとうございました

Ayoub Benzahia

ViewModelのファクトリクラスが必要です。

public class MyViewModelFactory implements ViewModelProvider.Factory {
private Application mApplication;
private String mParam;


public MyViewModelFactory(Application application, String param) {
    mApplication = application;
    mParam = param;
}


@Override
public <T extends ViewModel> T create(Class<T> modelClass) {
    return (T) new MyViewModel(mApplication, mParam);
}

そして、ビューモデルをインスタンス化するときは、次のようにします。

MyViewModel myViewModel = ViewModelProviders.of(this, new MyViewModelFactory(this.getApplication(), "my awesome param")).get(MyViewModel.class);

元の答え

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

完全なインストール後、Ubuntu 18.04LTSで「CiscoAnyconnectSecureモビリティクライアント」を開くことができません

分類Dev

Googleによるサインインアクティビティを開くことができません

分類Dev

ViewModelをアクティビティでインスタンス化することはできません

分類Dev

Androidがlistviewsetadapterでアクティビティnullポインター例外を開始できません

分類Dev

アクティビティに接続されているViewModelのレルムインスタンスを閉じることができません

分類Dev

AndroidがアクティビティComponentInfoをインスタンス化できません

分類Dev

ブルーオーシャンビジュアルパイプラインエディターを開くことができません

分類Dev

compileSdkVersion 23を使用したAPK、APK22を使用してAndroid携帯でメインアクティビティを開くことができません

分類Dev

Solaris11でWindowsディスクパーティションを開くことができません

分類Dev

GNAT2019コミュニティエディションのマイクロビットでAdaスクロールテキストデモを動作させることができません

分類Dev

android - 別のアクティビティにインテントでパーセル可能を渡すことができません

分類Dev

エラーの取得:アクティビティをインスタンス化できません

分類Dev

Android通知onClickアクティビティを開くことができませんでした

分類Dev

Android Studioで新しいアクティビティを開くことができません

分類Dev

Android UIテストで次のアクティビティを解決できません:インテント

分類Dev

Androidアクティビティをインスタンス化できません:パス上にクラスが見つかりませんでした

分類Dev

Android:メインクラスがアクションバーアクティビティに拡張されたときにエラー(java.lang.RuntimeException:アクティビティComponentInfoを開始できません)が発生しました

分類Dev

アクティビティをインスタンス化できません... ClassNotFoundExceptionが原因です

分類Dev

Android:プログラマティックテキストビューで小さなフォントサイズを作成することはできません

分類Dev

ヌルポインタ例外がアクティビティComponentInfoを開始できません

分類Dev

Xamarin.Android:アクティビティComponentInfoをインスタンス化できません

分類Dev

アクティビティをインスタンス化できませんComponentInfo-Android

分類Dev

Android RuntimeException:アクティビティをインスタンス化できません

分類Dev

フラグメントアクティビティからJSONファイルを開くことができません-AndroidStudio

分類Dev

Unity C#でアクティビティのインスタンスを取得できません

分類Dev

アクティビティandroidNougat7.xでLocalDateTimeのインスタンスを実行できません。

分類Dev

アプリの実行時に「アクティビティをインスタンス化できません」

分類Dev

別のアクティビティでリストビューアイテムIDを取得できません

分類Dev

次のアクティビティを開くことができませんAndroidStudio

Related 関連記事

  1. 1

    完全なインストール後、Ubuntu 18.04LTSで「CiscoAnyconnectSecureモビリティクライアント」を開くことができません

  2. 2

    Googleによるサインインアクティビティを開くことができません

  3. 3

    ViewModelをアクティビティでインスタンス化することはできません

  4. 4

    Androidがlistviewsetadapterでアクティビティnullポインター例外を開始できません

  5. 5

    アクティビティに接続されているViewModelのレルムインスタンスを閉じることができません

  6. 6

    AndroidがアクティビティComponentInfoをインスタンス化できません

  7. 7

    ブルーオーシャンビジュアルパイプラインエディターを開くことができません

  8. 8

    compileSdkVersion 23を使用したAPK、APK22を使用してAndroid携帯でメインアクティビティを開くことができません

  9. 9

    Solaris11でWindowsディスクパーティションを開くことができません

  10. 10

    GNAT2019コミュニティエディションのマイクロビットでAdaスクロールテキストデモを動作させることができません

  11. 11

    android - 別のアクティビティにインテントでパーセル可能を渡すことができません

  12. 12

    エラーの取得:アクティビティをインスタンス化できません

  13. 13

    Android通知onClickアクティビティを開くことができませんでした

  14. 14

    Android Studioで新しいアクティビティを開くことができません

  15. 15

    Android UIテストで次のアクティビティを解決できません:インテント

  16. 16

    Androidアクティビティをインスタンス化できません:パス上にクラスが見つかりませんでした

  17. 17

    Android:メインクラスがアクションバーアクティビティに拡張されたときにエラー(java.lang.RuntimeException:アクティビティComponentInfoを開始できません)が発生しました

  18. 18

    アクティビティをインスタンス化できません... ClassNotFoundExceptionが原因です

  19. 19

    Android:プログラマティックテキストビューで小さなフォントサイズを作成することはできません

  20. 20

    ヌルポインタ例外がアクティビティComponentInfoを開始できません

  21. 21

    Xamarin.Android:アクティビティComponentInfoをインスタンス化できません

  22. 22

    アクティビティをインスタンス化できませんComponentInfo-Android

  23. 23

    Android RuntimeException:アクティビティをインスタンス化できません

  24. 24

    フラグメントアクティビティからJSONファイルを開くことができません-AndroidStudio

  25. 25

    Unity C#でアクティビティのインスタンスを取得できません

  26. 26

    アクティビティandroidNougat7.xでLocalDateTimeのインスタンスを実行できません。

  27. 27

    アプリの実行時に「アクティビティをインスタンス化できません」

  28. 28

    別のアクティビティでリストビューアイテムIDを取得できません

  29. 29

    次のアクティビティを開くことができませんAndroidStudio

ホットタグ

アーカイブ