[解決済み] FragmentPagerAdapterを使ったViewPagerで、2回目に表示したときにフラグメントが空白になる。
2022-12-15 06:12:56
質問
フラグメントインターフェースの下にタブがあり、メインビューで異なるフラグメントを開くことができます。
私は、項目のリストである1つの特定のフラグメントを持っています。 ユーザーがこのリストの項目の 1 つを選択すると、別のフラグメントが開き、前のフラグメントのリストのすべての項目間を水平にスクロールするビューページャーが含まれます。 これは素晴らしい機能です。
ビューページャーはFragmentPagerAdapterを使用して項目を表示します。
問題は、ユーザがリスト内のアイテムを選択し、それを表示し、タブバーのボタンを押してリストに戻り、別のアイテムを選択したときに発生します。 2 回目に項目が選択されると、ビュー ページの代わりに空白の画面が表示されます。 これが起こったとき、私の LogCat では何のエラーも発生しません。
なぜビューページャーは最初の 1 回だけ表示されるのですか?
FragmentPagerAdapter:
public class ViewPagerAdapter extends FragmentPagerAdapter {
Cursor mCursor;
public ViewPagerAdapter(FragmentManager fm, Cursor c) {
super(fm);
mCursor = c;
}
public void changeCursor(Cursor c) {
mCursor = c;
this.notifyDataSetChanged();
}
@Override
public int getCount() {
if (mCursor == null) return 0;
else return mCursor.getCount();
}
@Override
public Fragment getItem(int position) {
mCursor.moveToPosition(position);
return TeamCardFragment.newInstance(mCursor, position);
}
}
PagerFragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = getArguments();
mCursorPosition = bundle.getInt(TeamCardCommon.BUNDLE_KEY_CURSOR_POSITION);
View mView = inflater.inflate(R.layout.team_card_master, container, false);
mViewPager = (ViewPager)mView.findViewById(R.id.team_card_master_view_pager);
mAdapter = new ViewPagerAdapter(getFragmentManager(), cursor);
new setAdapterTask().execute();
return mView;
}
private class setAdapterTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void result) {
mViewPager.setAdapter(mAdapter);
mViewPager.setCurrentItem(mCursorPosition);
}
}
どのように解決するのですか?
ビューページャーの項目をフラグメントではなく標準のビューとして再実装し、それに応じてアダプタを変更することで回避しました。
関連
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] ViewPagerでFragmentが表示されるタイミングを決定する方法
-
[解決済み] フラグメントでのコンテキストの使用
-
[解決済み] ViewPager PagerAdapter がビューを更新しない
-
[解決済み] ViewPagerとフラグメント - フラグメントの状態を保存する正しい方法は何ですか?
-
[解決済み】FragmentPagerAdapterとFragmentStatePagerAdapterの違いは何ですか?
-
[解決済み】ViewPagerを動的に更新しますか?
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】FragmentPagerAdapterとFragmentStatePagerAdapterの違いは何ですか?
-
[解決済み] 断片の中の断片
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] 実行に失敗しました app:processDebugResources Android Studio