嗨我有一個選項卡布局,通過viewpager膨脹一堆碎片每個片段實例化一堆視圖一切工作正常,但有一個問題,如果我通過幾個片段刷卡,然後刷回碎片通過那裏生命週期脫離和連接和設置導致加倍在其佈局視圖的片段其意見,如何正確處理碎片生命週期中的回收站視圖?
例如:通過一些片段片段顯示5次,滑動和滑動回到同一片段然後示出了10次
我相信它因爲即時設置一切onCreateView我嘗試將設置調用移動到onViewCreated這給了我一個不同的問題,片段和視圖創建正常,但當你刷卡然後回來的意見都沒有了,控制檯告訴我'沒有適配器連接跳過佈局',研究這給我的印象是我需要將我的適配器調用移動到主線程,但我無法得到這個工作空指針無論我儘量能有人指出我在正確的方向,
這裏是我的片段)的主要部分
public class OneFragment extends Fragment{
public static List<CardWriter> cardMakerList = new ArrayList<>();
private RecyclerView recyclerView;
private GridLayoutManager staggeredGridLayoutManagerVertical;
public static CardAdapter cardAdapter;
public OneFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate
(R.layout.fragment_one, container, false);
RecyclerView.LayoutManager staggeredGridLayoutManagerVertical = new
StaggeredGridLayoutManager(4,LinearLayoutManager.VERTICAL);
recyclerView = (RecyclerView) rootView.findViewById(R.id.card_grid);
cardAdapter = new CardAdapter(cardMakerList);
recyclerView.setLayoutManager(staggeredGridLayoutManagerVertical);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(cardAdapter);
recyclerView.addOnItemTouchListener(new
RecyclerTouchListener(getActivity().getApplicationContext(),
recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
CardWriter cardWriter = cardMakerList.get(position);
SpeakGrid.cardMakerList.add(SpeakGrid.cardMakerList.size(),cardWriter);
SpeakGrid.cardAdapter.notifyItemInserted(SpeakGrid.cardMakerList.size());
SpeakRecyclerGrid.cardMakerList.add
(SpeakRecyclerGrid.cardMakerList.size(),cardWriter);
SpeakRecyclerGrid.cardAdapter.notifyItemInserted
(SpeakGrid.cardMakerList.size());
Snackbar.make(view, "This card is " +
cardWriter.getCardEmotion() + " and it would say " +
cardWriter.getCardEmotion(), Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
ive been going through and debugging this and it was also happening while rotating so im now using if (savedinstance state == null) to solve the issue with rotating but it must be lost when scrolling because it still happens if i scroll more than one away and come back the cards in the view have doubled
只是以供將來參考,這似乎是最好的練習,但沒有解決我的問題, –