Intereting Posts
Android EditText («Текстовое поле»): автоматическая заливка первой буквы каждого слова во время ввода пользователем Получение байтов / поток изображения или ImageSource в Xamarin.Forms? Датчик температуры на Android Требуется ли RoboSpice shouldStop ()? Android Espresso с кинжалом Андроидный пользовательский список очень медленно при прокрутке Реверсное воспроизведение Android и кадр за кадром Как отобразить одно представление в качестве наложения другого? Как я могу совместно использовать общие функции и данные во многих действиях в одном приложении для Android Фоновое изображение для wrap_content Android. Как мне динамически установить имя пакета во время сборки для проекта с открытым исходным кодом? Получение базы данных SQLite и ее хранение в массиве объектов Android WebView: загружает только HTML, не загружает JS или CSS (на некоторых устройствах) Сбросить TextView вверх Намерение со старым дополнительным в onCreate () для singleTask Activity

Android – разбитый XML-синтаксический пример

Android SDK с момента выпуска API v. 11 содержит образец XmlAdapter, который также упоминается на официальном сайте . Этот образец теперь появляется как минимум в 3 папках: android-11, android-12 и android-13. И это сломано. Основная (но не только) проблема объявляет поставщик android.content.XmlDocumentProvider , который нигде не найден, включая https://android.googlesource.com
В Adapters.java также есть проблемы с компиляцией:

 mContext cannot be resolved to a variable line 973 mFrom cannot be resolved to a variable line 938 mTo cannot be resolved to a variable line 937 mTo cannot be resolved to a variable line 939 

Есть несколько вопросов, связанных с этим на android-developers но ответа нет. Кто-нибудь сумел проследить этот неуловимый XmlDocumentProvider и заставить образец работать? И что самое важное – дорогая команда Android, можете ли вы исправить выборку или вытащить ее?

Отсутствующий XmlDocumentProvider теперь отправляется с образцом в SDK 14, и проект компилируется против SDK 8 и выше. Однако, чтобы запустить его, вы должны изменить манифест, чтобы указать на правильного поставщика:

 <provider android:name="com.example.android.xmladapters.XmlDocumentProvider" android:authorities="xmldocument" /> 

Помимо исправления AndroidManifest.xml, как указано Джеффом Гильфелтом, вы также можете изменить класс XmlCursorAdapter в Adapters.java (файл с указанием ошибок) следующим образом:

 /** * Implementation of a Cursor adapter defined in XML. This class is a thin wrapper * of a SimpleCursorAdapter. The main difference is the ability to handle CursorBinders. */ private static class XmlCursorAdapter extends SimpleCursorAdapter implements ManagedAdapter { private Context mContext; private String mUri; private final String mSelection; private final String[] mSelectionArgs; private final String mSortOrder; private final int[] mTo; private final String[] mFrom; private final String[] mColumns; private final CursorBinder[] mBinders; private AsyncTask<Void,Void,Cursor> mLoadTask; XmlCursorAdapter(Context context, int layout, String uri, String[] from, int[] to, String selection, String[] selectionArgs, String sortOrder, HashMap<String, CursorBinder> binders) { super(context, layout, null, from, to); mContext = context; mUri = uri; mFrom = from; mTo = to; mSelection = selection; mSelectionArgs = selectionArgs; mSortOrder = sortOrder; mColumns = new String[from.length + 1]; // This is mandatory in CursorAdapter mColumns[0] = "_id"; System.arraycopy(from, 0, mColumns, 1, from.length); CursorBinder basic = new StringBinder(context, new IdentityTransformation(context)); final int count = from.length; mBinders = new CursorBinder[count]; for (int i = 0; i < count; i++) { CursorBinder binder = binders.get(from[i]); if (binder == null) binder = basic; mBinders[i] = binder; } } @Override public void bindView(View view, Context context, Cursor cursor) { final int count = mTo.length; final int[] to = mTo; final CursorBinder[] binders = mBinders; for (int i = 0; i < count; i++) { final View v = view.findViewById(to[i]); if (v != null) { binders[i].bind(v, cursor, cursor.getColumnIndex(mFrom[i])); } } } ...... ...... ...... 

Я получил ответ от кода, найденного здесь:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.0.1_r1/com/example/android/xmladapters/Adapters.java?av=f

Я получил ответ от Ромена Гая, ну вроде. Билет, который я открыл вчера, теперь имеет тег Status: FutureRelease, который, я полагаю, означает, что он исправит его в следующей версии. Для дополнительной ссылки здесь ссылка на дискуссию о разработчиках Android

Я встретил ту же ошибку и обыскал вокруг, обнаружил, что тот же вопрос задавался много раз. Вот как я его исправил.

Существует класс XmlDocumentProvider я нашел .

Я скопировал XmlDocumentProvider.java в проект XmlAdapter и пересмотрел XmlAdapter AndroidManifest.xml , заменив:

 <provider android:name="android.content.XmlDocumentProvider" android:authorities="xmldocument" /> 

с:

 <provider android:name="com.example.android.xmladapters.XmlDocumentProvider" android:authorities="xmldocument" /> 

Теперь я могу заставить RssReaderActivity работать.