Я пытаюсь преобразовать одно из моих приложений, чтобы теперь использовать фрагменты. Это приложение также использует Android License Checker. Во время тестирования у меня был закомментирован код проверки лицензии, и теперь приложение работает так, как я хочу. Теперь я готов раскомментировать этот код, чтобы вернуть его на Маркет, но когда я получаю это сообщение, каждый раз, когда я запускаю приложение:
java.lang.IllegalStateException: фрагмент MainHomeFragment {40544bd8} не присоединен к действию
Это происходит, если я тестирую по телефону или с помощью эмулятора. Похоже, что проверка лицензии не завершается достаточно быстро, поэтому, когда она раздувает фрагмент, нет действия, к которому его можно присоединить. Сначала я просто запускал приложение, а затем нажимал кнопку «Назад», как только оно загрузилось, и сразу же попробовал снова. Я подумал, что программа проверки лицензии все еще работает с первой попытки, поэтому в следующий раз я подождал 5 минут, прежде чем использовать клавишу возврата, и все еще получил ту же проблему. Странно то, что после того, как приложение взорвалось во 2-й раз, если я попробую его снова, оно заработает, но на 4-й попытке снова не получится, поэтому что-то не должно очищаться с первой успешной попытки. Если я закомментирую код LicenseChecker и запустлю его снова, он будет работать каждый раз. Я попытался поместить вызов LicenseChecker в новый класс в качестве потока, чтобы он не задерживал создаваемое действие, но все равно получал ту же проблему. Любые идеи о том, что я должен попытаться это исправить?
Вот код onCreate для моей основной функции Fragment:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork =
connectivityManager.getActiveNetworkInfo();
if (activeNetwork != null) {
android_id = Secure.getString(this.getContentResolver(),
Secure.ANDROID_ID);
mObsfuscator = new AESObfuscator(SALT, getPackageName(), android_id);
ServerManagedPolicy serverPolicy = new
ServerManagedPolicy(this, mObsfuscator);
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
mChecker = new LicenseChecker(this, serverPolicy,
BASE64_PUBLIC_KEY);
mChecker.checkAccess(mLicenseCheckerCallback);
}
setContentView(R.layout.fragment_layout);
}