web-dev-qa-db-ja.com

クラスLandroid / support / v7 / Preferences / R $ idにタイプIの静的フィールドlist_containerがありません

2年前のプロジェクトをAndroid Studio(および新しいライブラリ)に移行しました。PreferenceScreenを呼び出すと多くの問題が発生します。

Java.lang.NoSuchFieldError: No static field list_container of type I in class Landroid/support/v7/preference/R$id; or its superclasses (declaration of 'Android.support.v7.preference.R$id' appears in /data/app/com.sh.inv-1/base.apk)
  at Android.support.v7.preference.PreferenceFragmentCompat.onCreateView(PreferenceFragmentCompat.Java:260)
  at Android.support.v4.app.Fragment.performCreateView(Fragment.Java:1988)
  at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1080)
  at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1268)
  at Android.support.v4.app.BackStackRecord.run(BackStackRecord.Java:754)
  at Android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.Java:1653)
  at Android.support.v4.app.FragmentController.execPendingActions(FragmentController.Java:364)
  at Android.support.v4.app.FragmentActivity.onStart(FragmentActivity.Java:602)
  at Android.app.Instrumentation.callActivityOnStart(Instrumentation.Java:1234)

私のbuild.gradleは:

apply plugin: 'com.Android.application'

Android {
    useLibrary 'org.Apache.http.legacy'
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    defaultConfig {
        applicationId "com.sh.inv"
        targetSdkVersion 23
        versionCode 66
        versionName "2.5.0"
    }
    buildTypes {
        debug {
        }
        release {
            minifyEnabled true
            proguardFiles 'proguard-project.txt'
        }
    }
    productFlavors {
        dev {
            minSdkVersion 21
        }
        prod {
            minSdkVersion 14
        }
    }

    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
}

repositories {
    maven { url "http://jzaccone.github.io/SlidingMenu-aar" }
}


dependencies {
    compile files('libs/ormlite-Android-4.48.jar')
    compile files('libs/ormlite-core-4.48.jar')

    compile 'com.Android.support:design:23.2.1'
    compile 'com.Android.support:support-v4:23.2.1'

    compile 'com.Android.support:preference-v7:23.2.1'
    compile 'com.Android.support:preference-v14:23.2.1'
    compile "com.Android.support:appcompat-v7:23.2.1"
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.google.Android.gms:play-services-analytics:8.4.0'
    compile 'com.google.Android.gms:play-services-identity:8.4.0'
    compile 'com.google.Android.gms:play-services-drive:8.4.0'
    compile 'org.Apache.commons:commons-io:+'

    compile 'com.cocosw:undobar:1.8.1@aar'
    compile project(':afilechooser')
    compile project(':simplecropimage')
}

私のフラグメントは:

public class Settings extends Android.support.v7.preference.PreferenceFragmentCompat implements
    OnSharedPreferenceChangeListener {

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
    addPreferencesFromResource(R.xml.settings2);

私のAppBaseThemeは:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
  </style>

私はそれを解決する方法を本当に理解していません。私がしようとしました:

  • gradleキャッシュを削除する
  • gradleバージョンの変更(2.10および2.12)
  • 使用-SDK追加:< uses-sdk Android:minSdkVersion="8" Android:targetSdkVersion="19" xmlns:tools="http://schemas.Android.com/tools" tools:overrideLibrary="Android.support.v14.preference"/>
12
P. Sohm

この問題は、1つのアプリケーションで2つの異なるモジュールに同じ名前の2つのファイルがある場合に発生します。

たとえば、STACKアプリケーションで。 2つのモジュールがあります1.stac1 2. stac1-> res-> layoutのstac2にはstac2-> res-> layoutのminiactivity.xmlがありますminiactivity.xmlがあります

その後、この問題が発生します。 1つのxmlファイルを削除すると、正常に機能します。

36
saibaba vali

私はついに問題を見つけました。私はpreference_list_fragment.xmlと呼ばれるレイアウトを持っていました。ファイルを削除した後に動作します。

1
P. Sohm