#android
#Android
Вопрос:
Я использую счетчик с возможностью поиска (https://github.com/miteshpithadiya/SearchableSpinner ) и всякий раз, когда открывается диалоговое окно spinner, и я нажимаю кнопку home или что-либо еще, чтобы свернуть свое приложение, приложение выходит из строя со следующим кодом ошибки:
FATAL EXCEPTION: main
Process: com.package, PID: 21974
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.toptoche.searchablespinnerlibrary.SearchableSpinner)
at android.os.Parcel.writeSerializable(Parcel.java:1468)
at android.os.Parcel.writeValue(Parcel.java:1416)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:686)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
at android.os.Bundle.writeToParcel(Bundle.java:1079)
at android.os.Parcel.writeBundle(Parcel.java:711)
Мой адаптер:
//Initializing Spinner
spinner = (Spinner) findViewById(R.id.name);
ArrayAdapter<CharSequence> nameAdapter = ArrayAdapter.createFromResource(this,
R.array.name, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(nameAdapter);
Что не так? Есть ли какой-нибудь способ исправить это «вне» пакета?
Комментарии:
1. не могли бы вы добавить полную трассировку стека? Часто главные ошибки, которые, по-видимому, являются причиной, просто вызваны другой ошибкой. Так что я думаю, что внутри stacktrace есть еще что-то….
Ответ №1:
Похоже, это проблема с библиотекой, поскольку другие пользователи сообщили о той же проблеме на Github. Вам нужно будет использовать обходной путь, подобный этому, для отклонения SearchableListDialog в onPause().
РЕДАКТИРОВАТЬ: в SearchableListDialog.java:
@Override
public void onPause() {
dismiss();
super.onPause();
}
Комментарии:
1. Я видел это, но опубликованное там решение не применимо ко мне, так как откуда
dismiss();
оно взялось? Я получаюcan't resolve dissmis()
везде, где они его используют2. Чтобы уточнить: dismiss() является частью класса SearchableSpinner, поэтому вам необходимо получить к нему доступ по вашей ссылке, вы не можете просто вызвать dismiss() напрямую.
3. Я пытался это сделать, но у
spinner
класса нет методаdissmiss()
. Посмотрите здесь: i.imgur.com/CMEeBIi.png4. Плохо, похоже, что ошибка связана с классом SearchableListDialog, а не с самим SearchableSpinner. Вы можете обойти это, вручную импортировав библиотеку и переопределив onPause с помощью dismiss (как предлагали пользователи в вопросах Github). Вот класс, который необходимо исправить github.com/miteshpithadiya/SearchableSpinner/blob/master/… Возможно, вы захотите отправить запрос на извлечение автору библиотеки, это кажется довольно большим упущением.