Неверное исключение токена на счетчике, который использует (android: records = "@ array / type") во фрагменте - PullRequest
0 голосов
/ 05 февраля 2019

Когда я запускаю свой код на некоторых устройствах (например, MI note 4), он дает мне исключение:

android.view.WindowManager $ BadTokenException: невозможно добавить окно - токен android.view.ViewRootImpl $ W @ 7989790 недействителен;ваша деятельность запущена?

Но когда я запускаю это на высокоскоростном и последнем мобильном телефоне (MI note 5 pro), он работает нормально.Я не могу понять ошибку здесь, пожалуйста, направьте мне спасибо.

Вот XML для счетчика: -

<Spinner
    android:id="@+id/type_spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/dp_10"
    android:entries="@array/type" />

и мой строковый массив:

<string-array name="type">
     <item>Every Month</item>
     <item>Every Year</item>
     <item>Once</item>
</string-array>

add_reminder.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        View view1 = LayoutInflater.from(getActivity()).inflate(R.layout.add_reminder, null);

        final PopupWindow pw = new PopupWindow(view1, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        pw.setFocusable(true);
        pw.setTouchable(true);
        pw.showAtLocation(view, Gravity.CENTER, 0, 0);


        final Spinner type = view1.findViewById(R.id.type_spinner);
});

Мой фрагмент все еще работает за всплывающим окном, поэтому эта ошибка не должна появляться, поскольку она показывает, что действие не выполняется.И помните, что он работает нормально на последнем устройстве.

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Я решил эту ошибку, поместив XML-код моего popup во фрагмент и сделав его видимым при клике.Таким образом, код spinner прекрасно работает на каждом устройстве, поэтому ошибка должна быть где-то при использовании счетчика в пользовательском всплывающем окне.

0 голосов
/ 05 февраля 2019

Попробуйте следующим образом

View view1 = LayoutInflater.from(getActivity()).inflate(R.layout.add_reminder, null);

К

View view1 = LayoutInflater.from(view.getContext()).inflate(R.layout.add_reminder, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...