私のアプリケーションの1つにフラグメントを使用するように変換しようとしています。このアプリは、Androidライセンスチェッカーも使用しています。テスト中に私はライセンスチェッカーコードをコメントアウトしていましたが、今ではアプリが好きなように機能しています。私は今すぐ市場に戻すことができるようにそのコードのコメントを解除する準備ができていますが、私は私がこのメッセージを毎回私はアプリを起動するたびに取得する:フラグメントにアクティビティに添付されていないフラグメントのIllegalStateException
java.lang.IllegalStateException:フラグメントMainHomeFragment {40544bd8} toアクティビティ
これは電話機またはエミュレータでテストした場合に発生します。ライセンスチェッカーが十分に速く終了していないように見えるので、フラグメントを膨らませるときに、それを接続するアクティビティはありません。最初はアプリを起動してすぐにもう一度ロードボタンを押すだけでした。私はライセンスチェッカーが最初の試行からまだ実行していたかもしれないと思ったので、次回に5分待ってからバックキーを使用しても同じ問題が発生します。奇妙なことは、アプリが2回目に爆発した後で、もう一度試してみると4回目に失敗します。何かが成功した最初の試合からクリアされてはならないということです。 LicenseCheckerコードをコメントアウトして再度実行すると、毎回動作します。私はThreadとして新しいクラスに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);
}
この問題に関する更新。私はライセンスチェッカーで、ライセンスチェッカーが共有環境設定で何回失敗したかをカウントしていることを忘れていました。これは、毎回失敗してしまったと思う少数のユーザーがいたからです私がSharedPreferenceEditorのcommit()だけをコメントアウトすると、エラーは消えますが、入れようとしている値は保存されません。それが実行されるたびに唯一の理由は何ですか? – Chris