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

:에서 onCreate()에서 다음

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

와 조각 사용 읽을 수에서 :

Bundle bundle = this.getArguments(); 
Category cat = (Category) bundle.getSerializable("CATEGORY"); 
// now you can call loadPosts() 
관련 문제