Недопустимая прямая ссылка в классе AsyncTask, расширяющем BaseActivity - PullRequest
0 голосов
/ 18 февраля 2019

Я сталкиваюсь с этой ошибкой во время миграции проекта затмения в Android-студию.Я получаю эту ошибку на 3 классах.Все эти классы расширяют BaseActivity и вызывают поля из BaseActivity .Например, в классе SavingActivity внутри onPostExcuteMethod я вызываю поле с именем mProgressDlg из BaseActivity , и IDE указывает туда недопустимую прямую ссылку (ну, там нет красной линии, показывающейпод этим).

Часть BaseActivity код класса

public abstract class BaseActivity extends Activity implements OnClickListener {

public Button mBtnRefresh = null;
public Context mContext = null;
public GridView mGridView = null;
public ImageLoader mImageLoader = null;
public static ProgressDialog mProgressDlg;
public boolean mRefreshing = false;
public int mScreenWidth = 0;
public TextView mTxtNoData = null;

onPostExcute метод в SavingActivity :

protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        if (SavingActivity.this.mProgressDlg != null) {
            try {
                SavingActivity.this.mProgressDlg.dismiss();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        SavingActivity.this.mProgressDlg = null;
        if (SavingActivity.this.mMusicInfo != null) {
            SavingActivity.this.mStrMusicFilePath = SavingActivity.this.mContext.getFilesDir() + CookieSpec.PATH_DELIM + SavingActivity.this.mMusicInfo.strMusicFileName;
            SavingActivity.this.refreshPage();
        }
    }
}

Дайте мне знать, если вам нужно что-то еще для анализа.

РЕДАКТИРОВАТЬ: Я даже прокомментировал метод onPostExecute и попытался построить apk из cli gradlew lintRelease, но он указываетошибка `незаконная прямая ссылка на строку, которую я фактически прокомментировал.Пожалуйста, смотрите прикрепленные изображения.

cli build apk error

commented onPostExecute method

Журнал ошибок с терминала:

> Task :app:compileReleaseJavaWithJavac FAILED
E:\Android-Projects-Workspace\name\app\src\main\java\com\name\activities\SavingActivity.java:113: error: illegal forward reference
            if (BaseActivity.mProgressDlg != null) {
             ^

Ответы [ 2 ]

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

Похоже, что Android Studio указывает на неправильный класс для этой ошибки illegal forward reference.Ну, на самом деле компилятор испытывает эту ошибку в любом из классов внутри пакета.Так что проверьте все классы, и вы обязательно найдете тот фактический класс, который имеет illegal forward reference error.

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

Чтобы решить " недопустимая прямая ссылка ", вы должны знать, что ниже двух строк ЧТЕНИЕ статических полей mProgressDlg не разрешено в Java, см. ограничения статических полей .

SavingActivity.this.mProgressDlg != null

и

SavingActivity.this.mProgressDlg.dismiss()

Решение состоит в том, чтобы полностью квалифицировать mProgressDlg с BaseActivity, то есть

BaseActivity.mProgressDlg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...