自分が経験したエラーの解決方法

2024年6月28日

M1 Mac(Apple Silicon )は64ビットARM
Android Studioバージョン:android-studio-2023.1.1.28-mac_arm.dmg

この辺のバージョンにするとYoutube等で説明されているスクリプトと若干違う部分が良く出てくるようになる。そのため前に進めないときがあるが、以下の部分ではうまくいった。

switch文を使うとエラーになる、解決はif文にすること

以下はswitch文でメニューを切り替えているが、新しいAndroid Studioではエラーになる。

 private void bottomMenu() {

        chipNavigationBar.setOnItemSelectedListener(new ChipNavigationBar.OnItemSelectedListener() {
            @Override
            public void onItemSelected(int i) {
                Fragment fragment = null;
                
                switch (i) {
                    case R.id.home:
                        fragment = new MyNotesFragment();
                        break;
                    case R.id.reminder:
                        fragment = new ReminderFragment();
                        break;
                    case R.id.shopping_list:
                        fragment = new ShoppingListFragment();
                        break;
                }
                 getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
            }
        });
    }

以下のようにif文にすると問題なく使えるようになる。下のバー内のアイコンを「i」が、1番目、2番目を選択した状態を表している。

private void bottomMenu() {

        chipNavigationBar.setOnItemSelectedListener(new ChipNavigationBar.OnItemSelectedListener() {
            @Override
            public void onItemSelected(int i) {
                Fragment fragment = null;
                if (i == R.id.home) {
                    fragment = new MyNotesFragment();
                }else if (i == R.id.reminder){
                    fragment = new ReminderFragment();
                }else {
                    fragment = new ShoppingListFragment();
                }
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
            }
        });
    }

Roomの依存設定

dependenciesに入れる場合は implementation(”◯◯◯◯◯◯◯◯”)とする必要がある。

implementation("androidx.room:room-runtime:2.3.0")
annotationProcessor("androidx.room:room-compiler:2.3.0")

maven { url ‘https://jitpack.io’ }を入れる場合、一番上でなく一番下の「settings.gradle.kts」に入れて以下のように記述する必要がある。

maven { url = uri(“https://jitpack.io”) }

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            url = uri("https://jitpack.io")
        }
    }
}

M1 Macでerror: java.lang.ExceptionInInitializerErrorと出る

M1 Macの場合これはRoomのバージョンが2.3.0で出るようだ、以下のように最新2.6.1に変更したらビルドできた。

implementation(“androidx.room:room-runtime:2.6.1“)
annotationProcessor(“androidx.room:room-compiler:2.6.1“)