アプリの1つをFragmentsを使用するように変換しようとしています。このアプリもAndroidライセンスチェッカーを使用しています。テスト中に、ライセンスチェッカーコードをコメントアウトしてもらい、アプリが希望どおりに動作するようになりました。これで、そのコードのコメントを解除してマーケットに戻す準備ができましたが、そうすると、アプリを起動するたびに次のメッセージが表示されます。
java.lang.IllegalStateException:フラグメントMainHomeFragment{40544bd8}がアクティビティにアタッチされていません
これは、電話またはエミュレーターでテストした場合に発生します。ライセンスチェッカーが十分な速度で終了していないように思われるため、フラグメントを膨らませたときに、それをアタッチするアクティビティがありません。最初はアプリを起動し、アプリが読み込まれたら戻るボタンを押して、すぐに再試行しました。ライセンスチェッカーは最初の試行からまだ実行されている可能性があると思ったので、次に戻るキーを使用する前に5分間待っても、同じ問題が発生します。奇妙なことに、アプリが2回目に爆発した後、もう一度試してみると機能しますが、4回目の試行では再び失敗するため、成功した最初の試行から何かがクリアされてはなりません。LicenseCheckerコードをコメントアウトして再度実行すると、毎回機能します。LicenseCheckerの呼び出しをスレッドとして新しいクラスに入れてみたので、作成中のアクティビティが保持されないようになりましたが、同じ問題が発生します。これを修正するために何を試みるべきかについてのアイデアはありますか?
これが私のメインのFragmentActivityのonCreateコードです。
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);
}