0

我有一個片段內的幾個片段是viewPager其中包括每個節目的listiview。點擊任何項目列表視圖中,當我們去到下一個片段,但在接下來的片段後退按鈕並不在我的viewpager顯示任何如何在從另一個片段返回時在viewpager中顯示片段?

public class HomePage extends Fragment { 

private View view; 
private HomeTabsAdapter mAdapter; 
private ViewPager mPagerHome; 
public PagerSlidingTabStrip mTabs; 
private Typeface typeface; 


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

    mTabs = (PagerSlidingTabStrip) view.findViewById(R.id.TabsHome); 
    mPagerHome = (ViewPager) view.findViewById(R.id.pagerHome); 

    ArrayList<String> title = new ArrayList<>(); 
    title.add("خبر داغ"); 
    title.add("اقتصادی"); 
    title.add("بین المللی"); 


    mAdapter = new HomeTabsAdapter(HomePage.this.getFragmentManager(), title); 
    mPagerHome.setAdapter(mAdapter); 

    mPagerHome.setCurrentItem(title.size()); 
    mTabs.setViewPager(mPagerHome); 


    typeface = Typeface.createFromAsset(getActivity().getAssets(),"fonts/IRAN-Sans.ttf"); 


    //jologiri az 3 noghte kardane esme tab ha va font 
    LinearLayout tabsContainer = (LinearLayout) mTabs.getChildAt(0); 
    for (int i = 0; i < tabsContainer.getChildCount(); i++) { 
     TextView tab = (TextView) tabsContainer.getChildAt(i); 
     tab.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)); 
     tab.setPadding(8, 0, 8, 0); 
     tab.setTypeface(typeface); 
    } 

    return view; 
} 

和我的觀點尋呼機適配器

public class HomeTabsAdapter extends FragmentPagerAdapter { 


public ArrayList<String> mTitle; 

public HomeTabsAdapter(FragmentManager fm, ArrayList<String> mTitle) { 

    super(fm); 
    this.mTitle = mTitle; 
} 


@Override 
public Fragment getItem(int position) { 

    switch (position){ 
     case 0: 
      return HotNews.newInstance(); 
     case 1: 
      return Economic.newInstance(); 
     case 2: 
      return International.newInstance(); 

    } 

    return null; 
} 

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

@Override 
public CharSequence getPageTitle(int position) { 
    return mTitle.get(position); 
}} 

和一個片段

public class International extends Fragment { 

private View view; 
private ItemNews itemNews; 
private NewsAdapter adapter; 
private FloatingActionButton btn; 
private ExpandableListView list; 
private static final int SCROLL_TO_TOP = -1; 
private static final int SCROLL_TO_BOTTOM = 1; 
private static final int SCROLL_DIRECTION_CHANGE_THRESHOLD = 5; 
private int mScrollDirection = 0; 
private ItemChild childItem; 
private ArrayList<ItemChild> child; 

public static International newInstance(){ 
    International international = new International(); 
    return international; 
} 


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


    view = inflater.inflate(R.layout.listnews_fragment, container, false); 
    list = (ExpandableListView) view.findViewById(R.id.ListNews); 
    list.setGroupIndicator(null); 


    String text = " مسی به همراه بارسلونا ۶ بار قهرمان لالیگا، دو بار قهرمان جام حذفی اسپانیا، پنج بار برنده سوپرکاپ اسپانیا، سه بار قهرمان لیگ قهرمانان اروپا، دو بار\n" + 
      " قهرمان سوپر کاپ اروپا و دو بار قهرمان جام باشگاه‌های جهان شده است. مسی اولین و تنها بازیکنی است که در چهار رقابت لیگ قهرمانان اروپا به عنوان آ"; 

    child = new ArrayList<>(); 
    for (int i = 0; i <2; i++) { 
     childItem = new ItemChild(); 
     childItem.setId(i); 
     childItem.setImageChild("http://bit.do/logo00"); 
     childItem.setTitleChild("ورزش سه -"); 
     childItem.setDate("8ساعت قبل"); 
     child.add(childItem); 

    } 


    List<ItemNews> news = new ArrayList<>(); 
    for (int i = 0; i < 10; i++) { 
     itemNews = new ItemNews(); 
     itemNews.setId(i); 
     itemNews.setmIconSource("http://bit.do/logo00"); 
     itemNews.setmImage("http://bit.do/image00"); 
     itemNews.setmSource("ورزش سه -"); 
     itemNews.setmTime("8ساعت قبل"); 
     itemNews.setmTitle("messi"); 
     itemNews.setmNews(text); 
     itemNews.setChild(child); 
     news.add(itemNews); 

    } 


    adapter = new NewsAdapter(International.this, news,getActivity()); 
    list.setAdapter(adapter); 


    btn = (FloatingActionButton) view.findViewById(R.id.Floating); 


    list.setOnScrollListener(new AbsListView.OnScrollListener() { 

     int mScrollPosition; 

     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 

     } 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

      View topChild = view.getChildAt(0); 

      int newScrollPosition = 0; 
      if (topChild == null) { 
       newScrollPosition = 0; 
      } else { 
       newScrollPosition = -topChild.getTop() + view.getFirstVisiblePosition() * topChild.getHeight(); 
      } 

      if (Math.abs(newScrollPosition - mScrollPosition) >= SCROLL_DIRECTION_CHANGE_THRESHOLD) { 
       onScrollPositionChanged(mScrollPosition, newScrollPosition); 
      } 

      mScrollPosition = newScrollPosition; 
     } 
    }); 


    return view; 
} 

回答

0

嘗試在FragmentActivity 類實現onBackPressed()與尋呼機getCurrentItem() .... 。它肯定會工作:)

+0

我的尋呼機在fragment.v4和片段的活動和不使用片段活動 –