Сбой приложения при сворачивании при открытии диалогового окна

#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.png

4. Плохо, похоже, что ошибка связана с классом SearchableListDialog, а не с самим SearchableSpinner. Вы можете обойти это, вручную импортировав библиотеку и переопределив onPause с помощью dismiss (как предлагали пользователи в вопросах Github). Вот класс, который необходимо исправить github.com/miteshpithadiya/SearchableSpinner/blob/master/… Возможно, вы захотите отправить запрос на извлечение автору библиотеки, это кажется довольно большим упущением.