簡體   English   中英

片段內容在我切換並再次選擇之前不會顯示

[英]Fragment content does not show up until I switch it and select it again

我的Android應用程序出現問題:我的片段內容直到我切換並再次選擇后才顯示。 僅在片段開始處加載的是卡列表。

在這里,您獲得了Fragment的onCreate方法,該方法可以加載所有內容:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    bundle = this.getArguments();
    debts = bundle.getParcelableArrayList("list");
    adapter =  new CardAdapter(getActivity(), android.R.color.holo_blue_dark);

    for (int i=0; i<debts.size();++i) {
        Debt d = debts.get(i);
        Card card = new Card(d.getSecondUser(),d.getSubject());
        adapter.add(card);
    }


}

在這里的onActivityCreated方法中,我為列表設置了適配器:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    CardListView list = (CardListView) getView().findViewById(R.id.newCard);
    list.setCardTheme(CardTheme.Light);
    list.setAdapter(adapter);
}

如果我使用已經加載的卡的ArrayList,它會起作用,但不是這樣。 我幾乎嘗試了所有東西...非常感謝。


更新:即使我嘗試了您提供給我的解決方案,它也在不斷發生,現在我的代碼:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    bundle = this.getArguments();
    debts = bundle.getParcelableArrayList("list");
    adapter =  new CardAdapter(getActivity(), android.R.color.holo_blue_dark);

    for (int i=0; i<debts.size();++i) {
        Debt d = debts.get(i);
        Card card = new Card(d.getSecondUser(),d.getSubject());
        adapter.add(card);
    }


}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_debts, container,
            false);

    CardListView list = (CardListView) rootView.findViewById(R.id.newCard);
    list.setCardTheme(CardTheme.Light);
    list.setAdapter(adapter);

    return rootView;
}

您應該在onCreateView()方法中初始化cardListView。 在onActivityCreated()方法之前調用onCreateView()。 onCreateView()應該是片段視圖初始化時的關鍵點。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

    //use your layout file instead of R.layout.fragment_main
    View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);

    CardListView list = rootView.findViewById(R.id.newCard);
    list.setCardTheme(CardTheme.Light);
    list.setAdapter(adapter);
}

請查看Fragments的生命周期

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM