我在我的活动(我它们之间进行浏览使用片段交易)两个片段:Android的碎片两次
- 科目
- 主题详细名单 - 名单等级
主题片段布局:
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/refresher"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
swipeRefreshLayout的侦听器是活动。它触发一个AsyncTask,它下载新数据,通知数据已更改的片段并隐藏swipeRefreshLayout。
的onPostExecute方法的问题的一部分:
...
try {
formatData();
} catch (JSONException e) {
e.printStackTrace();
}
View refresher = findViewById(R.id.refresher);
((SwipeRefreshLayout) refresher).setRefreshing(false);
marksFragment.notifyUpdate(activity);
subjectsFragment.notifyUpdate(activity);
它正常工作,但不是在这种情况下:
- 我拉来刷新数据
- 我浏览到主题细节(使用 碎片交易)
- setRefreshing方法在 碎片交易期间被调用
在这种情况下,主题片段只是挂在那里,两个片段都在活动中。
SubjectFragment的代码:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
((SwipeRefreshLayout) view.findViewById(R.id.refresher)).setOnRefreshListener((SwipeRefreshLayout.OnRefreshListener) activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.subjects_fragment, null);
}
我setRefreshing(false)
上refreshLayout和如何避免让受试者片段两次?
你可以张贴乌尔第一片段的onCreate()? –
@PhanDinhThai我更新了这个问题。 – cuddlecheek