の動的リストを表示するのにFragmentActivity
とViewPager
を使用しようとしています。静的バージョンを実行する方法の例はたくさんあります。私の問題は、私が表示するリストを動的にロードする必要があり、ユーザーの入力(追加/削除)に基づいて変更することもできるということです。私はカスタマイズしたandroid.support.v4.content.Loader
を使用してリストを構築するために使用できるデータセットをロードしようとしています。Android - FragmentActivity + Loaderを使用してFragmentStatePagerAdapterを更新する際の問題
私は(FragmentStatePagerAdapter
から)このコードが実行される時点で、アダプタと問題FragmentStatePagerAdapter#notifyDataSetChanged()
コールを更新したいとき、私はポイントを取得するまで、すべてが私のセットアップで正常に行く
public void finishUpdate(View container)
{
if(mCurTransaction != null)
{
mCurTransaction.commit(); // BANG!!! The exception is thrown
mCurTransaction = null;
mFragmentManager.executePendingTransactions();
}
}
トランザクションのコミットをして失敗しこのメッセージ:FragmentManagerImpl
内のコードが実行される
java.lang.IllegalStateException: Can not perform this action inside of onLoadFinished
ため:
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でなく、結果は私が何とかtransaction.commitAllowingStateLoss()
が関連すべてにtramsaction.commit()
を変更しようと様々な変数を見ていたonLoadFinished
に戻されたとき、それはLoaderManagerImpl.LoaderInfo
に設定されていることが判明しますトランザクションはプライベートであるか、少なくともパッケージで保護されているようです。
私は何をする必要があるのですか(そして、どうすればよいですか)。
だけではなく、Loaderを使用しての、私はあなたがFragmentStatePagerAdapter
をコピーし、あなたが好きしかし、それを変更したり、ゼロから独自のPagerAdapter
を作成することができますAsyncTask
あなたはローダーでこれを行うための適切な方法を把握することができたことがありますか?私は同じ問題に直面している。私は 'transaction.commitAllowingStateLoss()'を使ってそれを動作させることができましたが、Googleが意図したことを知っていればいいです...データをロードした後にフラグメントトランザクションを実行する方法があるようですローダーを使用しています... – ashughes
私はこれをあきらめて、限られたプールでModernTaskLoaderを使用しています – Bostone
ModernTaskLoaderとは何ですか? – ashughes