0

我試圖在操作欄和視圖分頁器中實現帶有選項卡的活動。每個標籤都有相同的片段。 我需要在調用onCreateView之後更新片段,傳遞對象。在FragmentPagerAdapter中的onCreateView之後更新片段視圖

尋呼機適配器:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter { 

    public MyFragmentPagerAdapter() { 
     super(getSupportFragmentManager()); 
    } 

    @Override 
    public int getCount() { 
     return cat_pages.getList_categories().size(); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Log.i("position fragment", "i = " + position); 

    final Handler uiHandler = new Handler(); 
    int index = position; 

    final Category cat = cat_pages.getList_categories().get(index); 
    Log.i("position fragment", "name = " + cat.getName()); 

    mCategoriesFragment = new ListPostFragment(); 

     return mCategoriesFragment; 
    } 
} 

片段:

public class ListPostFragment extends Fragment { 

// Layouts 
private LinearLayout layout_loading; 
public static GridView list_view_articles; 
private TextView txt_nothing, txt_title; 

// The list of headlines that we are displaying 
private List<Post> mPostsList = new ArrayList<Post>(); 
private List<Post> list_posts = new ArrayList<Post>(); 

// The list adapter for the list we are displaying 
private ArticlesAdapter mListAdapter; 

private Category mCurrentCat; 

Category clicked_cat; 
String activity; 
String title; 

public ListPostFragment() { 
     super(); 
} 

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

    mListAdapter = new ArticlesAdapter(getActivity(), mPostsList); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_grid_posts, container, false); 

    layout_loading = (LinearLayout) rootView.findViewById(R.id.layout_loading); 
    list_view_articles = (GridView) rootView.findViewById(R.id.gridViewArticles); 
    txt_nothing = (TextView) rootView.findViewById(R.id.txt_no_result); 
    txt_title = (TextView) rootView.findViewById(R.id.txt_title); 
    Log.i("frag", "frag create view"); 

    return rootView; 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    list_view_articles.setAdapter(mListAdapter); 
} 

public void loadPosts(Category clicked_cat, List<Post> list_posts, String title) { 

    Log.i("frag", "frag load"); 
    layout_loading.setVisibility(View.VISIBLE); 
    list_view_articles.setVisibility(View.GONE); 
    txt_title.setVisibility(View.GONE); 

    mPostsList.clear(); 

    layout_loading.setVisibility(View.GONE); 

    if(list_posts != null){ 
     mPostsList.addAll(list_posts); 

    if(mPostsList.size() > 0){ 
     list_view_articles.setVisibility(View.VISIBLE); 
     txt_nothing.setVisibility(View.GONE); 
    }else{ 
      list_view_articles.setVisibility(View.GONE); 
     txt_nothing.setVisibility(View.VISIBLE); 
    } 

    mListAdapter.notifyDataSetChanged(); 
    }else{ // Nothing to display 
     list_view_articles.setVisibility(View.GONE); 
    txt_nothing.setVisibility(View.VISIBLE); 
    } 
} 
} 

==>我需要什麼來調用PagerAdapter的getItem(loadPosts(...)),一旦onCreateView被調用。

任何幫助非常感謝。

+0

也許你可以使用Broacast接收器和意圖 –

回答

0

你應該通過你的等級作爲額外的片段,像這樣:在該片段中,你可以使用閱讀

Bundle bundle = new Bundle(); 
bundle.putSerializable("CATEGORY", cat); 
mCategoriesFragment.setArguments(bundle); 

,然後在的onCreate():

Bundle bundle = this.getArguments(); 
Category cat = (Category) bundle.getSerializable("CATEGORY"); 
// now you can call loadPosts() 
相關問題