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

あなたのために常にFeedFragを使用しています –

答えて

0

はい、明らかです。 SimpleFragmentPagerAdaptergetItemメソッドの中でフラグメントを正しく呼び出していないためです:あなたはいつもFeedFragを呼び出していました。

タイトル「今後」を持っている1、あなたの第三の断片を呼び出すためのコードを入れて、このようなあなたのビューのページャアダプタのコードを変更しよう、と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

私はそれを通知しなかった、ありがとう –

関連する問題