VolleyのonResponse()のフラグメントを置き換えようとしています。それは変わってきていますが、奇妙な方法です。VolleyのOnResponse()内のフラグメントが置き換えられない
- 古いものはまだ表示されていませんが、新しいものは表示されません。
- 古いフラッグは非対話型です&クリックイベントは によって処理されています。
新しいフラッグが古いフラッグの下にあるようです。
VolleyのonResponse()の外側でフラグを置き換えようとすると、すべての動作が正常に行われます。古いフラグが消えて新しいフラグが表示されます。
getNetworkManager().jsonGETRequest(new NetworkManagerRequestData(getActivity(), this,
orderListUrl,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.main_frame, IdleFragment.newInstance());
transaction.commit();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
..
}
}, NetworkManager.getDefaultPolicyForNonTransactions(), false));
フラグメントは、FrameLayoutを使用して動的に追加されています。私には5〜6枚の葉が付いています。このトランザクションを除き、すべてがアニメーションで美しく動作しています。
ここに、空のFrameLayoutであるR.id.main_frameがあります。
<FrameLayout
android:id="@+id/main_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
..
/>
UPDATE だから私は、これは同じ動作を持ってAsyncTask
内のフラグメントのトランザクションを実装new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.main_frame, IdleFragment.newInstance());
transaction.commit();
}
}.execute();
を試してみました。通常、非同期コールバックの外部でのトランザクションはうまくいきます。ここで
は、私はあなたが静的なXMLレイアウトファイルに配置された断片を置換することはできません
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/pitch_grey"
android:clickable="true"
android:fillViewport="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
.....
</RelativeLayout>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
非同期呼び出しでフラグメントトランザクションを開始することは推奨されません。 IllegalStateExceptionが発生する可能性があります。 – Embydextrous
私は必要な点検をしています。 –