の動的リストを表示するためFragmentActivity
に withを使用しようとしています。静的バージョンを実行する方法については、多くの例があります。私の問題は、表示するリストを動的にロードする必要があり、ユーザー入力 (追加/削除) に基づいて変更できることです。リストの作成に使用できる一連のデータをロードするためにカスタマイズを使用しようとしています。ViewPager
Fragments
android.support.v4.content.Loader
FragmentStatePagerAdapter#notifyDataSetChanged()
アダプターを更新し、このコードが実行される時点で呼び出しを発行する時点に到達するまで、セットアップですべてがうまくいきます(からFragmentStatePagerAdapter
)
public void finishUpdate(View container)
{
if(mCurTransaction != null)
{
mCurTransaction.commit(); // BANG!!! The exception is thrown
mCurTransaction = null;
mFragmentManager.executePendingTransactions();
}
}
トランザクションのコミットは次のメッセージで失敗します:
java.lang.IllegalStateException: Can not perform this action inside of onLoadFinished
FragmentManagerImpl
このコード内で実行されるため:
private void checkStateLoss() {
if (mStateSaved) {
throw new IllegalStateException(
"Can not perform this action after onSaveInstanceState");
}
if (mNoTransactionsBecause != null) {
throw new IllegalStateException(
"Can not perform this action inside of " + mNoTransactionsBecause);
}
}
mNoTransactionsBecause
値が null ではないことがわかり、結果が返されるときに設定されLoaderManagerImpl.LoaderInfo
ますonLoadFinished
何らかの形で変更しようとしているさまざまな変数を見ていましたtramsaction.commit()
がtransaction.commitAllowingStateLoss()
、トランザクションに関連するすべてのものはプライベートであるか、少なくともパッケージで保護されているようです。
必要なこと (およびその方法) を実行できるかどうか、誰かが一般的なアイデアを教えてくれますか?
ローダーを使用する代わりに、AsyncTask で読み込み操作を実行すると、コードが正常に動作することに注意してください。