0

화면이 업데이트되고 탭이 변경되면 다른 탭의 텍스트는 여전히 첫 번째 탭의 특성을 갖습니다.조각이 탭을 변경하면 텍스트가 변경되지 않습니다.

private int mPage; 

public static FeedFrag newInstance(int page) { 
    Bundle args = new Bundle(); 
    args.putInt(ARG_PAGE, page); 
    FeedFrag fragment = new FeedFrag(); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mPage = getArguments().getInt(ARG_PAGE); 
} 

// Inflate the fragment layout we defined above for this fragment 
// Set the associated text for the title 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.feed_frag, container, false); 
    TextView first = (TextView) view.findViewById(R.id.Feed); 
    first.setText("feed"); 
    return view; 
} 

그리고 이것은 다른 탭

public class InStockFrag extends Fragment { 

    public static final String ARG_PAGE = "ARG_PAGE"; 

    private int mPage; 

    public static InStockFrag newInstance(int page) { 
     Bundle args = new Bundle(); 
     args.putInt(ARG_PAGE, page); 
     InStockFrag fragment = new InStockFrag(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mPage = getArguments().getInt(ARG_PAGE); 
    } 

    // Inflate the fragment layout we defined above for this fragment 
    // Set the associated text for the title 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.in_stock_frag, container, false); 
     TextView second = (TextView) view.findViewById(R.id.InStock); 
     second.setText("In Stock"); 
     return view; 
    } 
} 

메인 활동이다

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
    viewPager.setAdapter(new SimpleFragmentPagerAdapter(getSupportFragmentManager())); 

    // Give the PagerSlidingTabStrip the ViewPager 
    PagerSlidingTabStrip tabsStrip = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
    tabsStrip.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     // This method will be invoked when a new page becomes selected. 
     @Override 
     public void onPageSelected(int position) { 
      // Toast.makeText(getActivity().this, "Selected page positon: " + position, Toast.LENGTH_SHORT).show(); 
     } 

     // This method will be invoked when the current page is scrolled 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      // Code goes here 
     } 

     // Called when the scroll state changes: 
     // SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING 
     @Override 
     public void onPageScrollStateChanged(int state) { 

      // Code goes here 
     } 

    }); 
    tabsStrip.setViewPager(viewPager); 
} 

SimpleFragmentAdapter :

public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter { 

    final int PAGE_COUNT = 3; 
    private String tabTitles[] = new String[] { "Feed", "In Stock", "Upcoming" }; 

    public SimpleFragmentPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public int getCount() { 
     return PAGE_COUNT; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return FeedFrag.newInstance(position + 1); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     // Generate title based on item position 
     return tabTitles[position]; 
    } 
} 

이 응용 프로그램은 "사료로 3 개 탭에서 텍스트를 반환 "다른 단어 대신에.

+1

당신이 게시 할 수를 SimpleFragmentPagerAdapter의 코드? –

+0

당신의 becuase는 항상 FeedFrag를 사용합니다 –

답변

0

예, 물론입니다. SimpleFragmentPagerAdapter에서 getItem 방법으로 조각을 올바르게 호출하지 않았기 때문에 발생했습니다. 항상 FeedFrag을 호출했습니다.

시도는 다음과 같이보기 호출기 어댑터의 코드를 변경하고 getItem 방법 안에, 세 번째 조각을 호출하는 제목 "다가오는"가 하나의 코드를 넣어 :

public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter { 

    final int PAGE_COUNT = 3; 
    private String tabTitles[] = new String[] { "Feed", "In Stock", "Upcoming" }; 

    public SimpleFragmentPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public int getCount() { 
     return PAGE_COUNT; 
    } 

    @Override 
    public Fragment getItem(int position) { 

     if (position==0) { 
      return FeedFrag.newInstance(position + 1); 
     } else if (position == 1) { 
      return InStockFrag.newInstance(position + 1); 
     } else { 
      //HERE RETURN SAME METHOD OF UPCOMING FRAGMENT 
     } 

    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     // Generate title based on item position 
     return tabTitles[position]; 
    } 

} 
+0

나는주의를 기울이지 않았다. 고맙다. –