Intereting Posts
Что делать, если BufferQueue был оставлен? Как создать запрос с выбором значения поля постороннего объекта Android SeekBar устанавливает значение прогресса Удалите ли GeForce Android, если приложение было убито пользователем? Как плавно анимировать высоту в CSS или Javascript на мобильных устройствах В чем разница между httpconnection на J2ME и HttpUrlConnection на Android (http error 401) Android: универсальный загрузчик изображений и ProgressBar на ViewPager не работают Intra-Capture Intage не может вернуться в Galaxy Tab Limited Edition Как написать символ и в файле android strings.xml Темы приложений, изменения и ImageView src на основе имени темы приложения Android – настроить scrollview, когда клавиатура для Android 5.0 (леденец) Android: как зарегистрировать мое приложение как «приложение для камеры» Альтернатива OpenSL ES на Android Приложение Amazon Marketplace отклонено для хранения файла настроек Eclipse Обнаружение исходящего вызова и события зависания вызова в android

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 работать.