У меня проблема в Android в версиях 5.x, не воспроизводимая в Android 4.3.
При запуске PreferenceActivity появляется следующая ошибка:
java.lang.RuntimeException: невозможно запустить активность ComponentInfo {com.xxxx.yyyy/com.xxxx.yyyy.view.SettingsActivity}: android.view.InflateException: двоичная строка XML файла # 31: двоичный XML-код строка файла # 31: ошибка раздувания класса
Я занимался поиском в Интернете по причинам, но они говорят, что ошибка может произойти по нескольким, по разным причинам, и не знаю, что происходит точно, и никак не сузить проблему.
Если я освобожу файл preferences.xml, там будет ошибка, если я запустил другую, DummyActivity (пустое действие), это произойдет снова, поэтому ошибка может быть... в другом месте приложения!
Активность вызывающего абонента - это активность карты; Я читал, что это может быть проблемой, но я запускаю ее, используя самую последнюю доступную документацию:
((SupportMapFragment) mContext.getSupportFragmentManager()
.findFragmentById(R.id.map))
.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap map) {
mMap = map;
setUpMap();
}
});
Использование getSupportFragmentManager и асинхронных вызовов.
Любые идеи? Я не могу просто искать по всему приложению, ищущему эту ошибку! Android должен предоставить более удобную для человека информацию для таких проблем... особенно, когда они не происходят в каждой версии Android, что является еще одним вопросом: почему совместимость настолько нарушена так часто.
Используя мою систему управления версиями, я выполнил двоичный поиск (вздох), чтобы найти набор изменений, где ошибка появляется впервые, и она соответствует, когда я обновляю целевую версию sdk до API 23 (Android 6.0, изменение прав доступа ) все сломанный:
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
}
dependencies {
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-maps:8.4.0'
}
Я искал и есть больше людей с той же проблемой, поэтому мне кажется, что есть ошибка в sdk-инструментах версии 23.0.1 (последняя), Проблема в том, что я не могу обновиться до версии API 23 и правильно проверить разрешения, так как Android 6 справляется с ними, но я могу немного сделать это, инструменты API просто не работают.
Указать android:name = "com.packagename.Activityname"
в вашем XML файле.
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"
android:name="com.packagename.Activityname"/>