更新中にSwipeRefreshLayoutでフラグメントを切り替えると、フラグメントがフリーズするが、実際にはまだ動作している
2023-12-19 10:03:34
質問
UPDATE: 私はそれが正しく動作すると思った。しかし、いくつかのテストの後、トラブルはまだ存在しています*sniff*。
その後、よりシンプルなバージョンを作成し、何が起こるかを確認したところ、切り離されたはずのリフレッシュされたフラグメントがまだ残っていることが分かりました。正確には、古いフラグメントのビューがそこに残っています。 の上に 新しいフラグメントの上に。元のアプリのRecyclerViewの背景は透明ではないので、前に言ったような結果になりました。
アップデートの終了
私は
MainActivity
で、このようなレイアウトです。
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"
android:layout_width="match_parent" android:layout_height="match_parent">
<!-- As the main content view, the view below consumes the entire
space available using match_parent in both dimensions. -->
<FrameLayout android:id="@+id/container" android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- android:layout_gravity="start" tells DrawerLayout to treat
this as a sliding drawer on the left side for left-to-right
languages and on the right side for right-to-left languages.
If you're not building against API 17 or higher, use
android:layout_gravity="left" instead. -->
<!-- The drawer is given a fixed width in dp and extends the full height of
the container. -->
<fragment android:id="@+id/navigation_drawer"
android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
android:layout_gravity="start" tools:layout="@layout/fragment_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>
フラグメント
ContentView
を埋めるために使う
@id/container
は、次のように構成されています。
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/contentView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/tweet_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/grey_300"/>
</android.support.v4.widget.SwipeRefreshLayout>
そして、ここでは
onCreateView()
の
ContentView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View inflatedView = inflater.inflate(R.layout.fragment_content, container, false);
mRecyclerView = (RecyclerView) inflatedView.findViewById(R.id.tweet_list);
mRecyclerView.setHasFixedSize(false);
mLinearLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
mRecyclerView.setLayoutManager(mLinearLayoutManager);
mTweetList = new ArrayList<Tweet>;
mAdapter = new TweetAdapter(mTweetList);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mSwipeRefreshLayout = (SwipeRefreshLayout) inflatedView.findViewById(R.id.contentView);
mSwipeRefreshLayout.setOnRefreshListener(
...
);
return inflatedView;
}
次に
MainActivity
を切り替えることで、表示する内容を変えています。
ContentView
. すべてうまくいっているように見えますが、ひとつだけ例外があります。
ContentView
フラグメントを切り替えたときに、コンテンツがフリーズしてしまいます。しかし、実際には、あなたがそれを見ることができないことを除いて、すべてのものは通常通り動作します。
どのように解決するのですか?
さて... 苦労の末、結局は自分でこの問題を解決したのですが、トリッキーな方法で...
私はちょうど以下を追加する必要があります
onPause()
:
@Override
public void onPause() {
super.onPause();
...
if (mSwipeRefreshLayout!=null) {
mSwipeRefreshLayout.setRefreshing(false);
mSwipeRefreshLayout.destroyDrawingCache();
mSwipeRefreshLayout.clearAnimation();
}
}
関連
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] android: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] アダプタからActivityメソッドを呼び出す
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?