FragmentPagerAdapter
への変更について通知する必要があるいくつかのフラグメントを含むを使用しdatabase
ます。これを行うには、コールバック インターフェイスを実装するフラグメントを繰り返し処理し、refreshData()
メソッドを呼び出します。
これは、デバイスの向きが変わるまで問題なく機能します。向きを変更した後、メソッド呼び出しが機能しているように見えても、フラグメント UI が視覚的に更新されません。
私がこれまでに読んだことから、これFragmentPagerAdapter
はフラグメントのライフサイクルを処理し、コールバックを受け取るフラグメントが実際に表示されるものではないために発生します。
private class DataPagerAdapter extends FragmentPagerAdapter {
private DataFragment[] fragments = new DataFragment[] {
new FooDataFragment(), BarDataFragment()};
public DataPagerAdapter(android.support.v4.app.FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments[position];
}
@Override
public int getCount() {
return fragments.length;
}
public DataFragment[] getFragments() {
return fragments;
}
}
protected void refreshData() {
for (DataFragment dataFragment : mPagerAdapter.getFragments()) {
dataFragment.refreshData();
}
各フラグメント内のブロードキャスト レシーバーを使用して一時的にこの問題を修正しましたが、この解決策は無駄であり、メモリ リークが発生する可能性があります。これを正しく修正するにはどうすればよいですか?ランドスケープ モードでは別のレイアウトとロジックを使用しているため、向きの変更後に新しく作成されたフラグメントを使用したいと考えています。