Ошибка при отклонении ProgressDialog - E / ViewRootImpl: sendUserActionEvent () mView == null - PullRequest
0 голосов
/ 26 января 2019

Извините, я знаю, что этот вопрос задавался пару раз.Но я попробовал предлагаемое решение и не увенчался успехом.

В моем приложении для Android я начал случайно получать эту ошибку из ниоткуда, я не изменял код, он пару раз работал нормально, и теперь он показывает мне эту ошибку:

`E/ViewRootImpl: sendUserActionEvent() mView == null`

logcat

Это происходит, когда я вызываю свой класс Java, где я настраиваю BluetoothConnectionService.В частности, это происходит, когда вызывается метод для закрытия диалогового окна Progress.

`public ConnectedThread(BluetoothSocket mSocket) {
        Log.d(TAG, "ConnectedThread: Starting");

        mmBTSocket = mSocket;
        InputStream mTempIn = null;
        OutputStream mTempOut = null;
        // dismiss the progressdialog when the connection is established.
        try{
            mProgressDialog.dismiss();
        } catch (NullPointerException e) {
            Log.e(TAG, "ConnectedThread: Couldn't dismiss progressDialogBox" + e.getMessage(), e);
        }
        try {
            mTempIn = mmBTSocket.getInputStream();
            mTempOut = mmBTSocket.getOutputStream();
        } catch (IOException e) {
            Log.e(TAG, "ConnectedThread: Failed to get I/O Stream: " + e.getMessage(), e);
        }
        mInStream = mTempIn;
        mOutStream = mTempOut;
    }`

В файле Dialog.java, я думаю, что это происходит в этом методе.

`@Override
public void dismiss() {
    if (Looper.myLooper() == mHandler.getLooper()) {
        dismissDialog();
    } else {
        mHandler.post(mDismissAction);
    }
}`

Предыдущие предложения по этой ошибке, которые я нашел здесь на stackoverflow, не сработали.Я попытался добавить следующий код в мой AndroidManifest, который не работал:

`       android:name=".MainActivity"
        android:configChanges="keyboardHidden|orientation|screenLayout|screenSize"
        android:label="@string/app_name"`

Пожалуйста, любые предложения помогли бы, так как я закончил приложение в основном до того, как это начало происходить, и я не могу понять, почему!!

1 Ответ

0 голосов
/ 26 января 2019

Вам нужно проверить, становится ли ваш контекст пустым.Это обычно происходит, когда контекст или представление, на которое вы указываете, становится нулевым.Просто попробуйте выполнить следующие проверки перед вызовом этого:

 if ( getContext() != null && getView != null )
 {
      // do your stuff here
 }

Также вам необходимо обновить представления в главном потоке.Если вы не участвуете в главном потоке, вы должны реализовать обработчик для обновления ваших компонентов пользовательского интерфейса.Посетите следующую ссылку для деталей:

https://developer.android.com/training/multiple-threads/communicate-ui

Выполните следующие действия:

 Handler handler = new Handler(); // write in onCreate function

 handler.post(new Runnable() {
                @Override
                public void run() 
                {
                    // Update your UI components here
                }
            });    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...