2017-07-06 53 views
0

正如我有片段有ViewPager在其中我显示另外三个片段,现在从所有三个片段调用onCreateView方法。 这是我的代码。如何停止正在调用自定义ViewPager的onCreateView方法

public class CustomViewPager extends ViewPager { 
private boolean enabled; 

public CustomViewPager(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.enabled = true; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (this.enabled) { 
     return super.onTouchEvent(event); 
    } 
    return false; 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 
    if (this.enabled) { 
     return super.onInterceptTouchEvent(event); 
    } 
    return false; 
} 

public void setPagingEnabled(boolean enabled) { 
    this.enabled = enabled; 
} 
} 

的Xml

<com.customView.CustomViewPager 
      android:id="@+id/newOrderContainerPager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_above="@+id/layout_next_previous" 
      android:layout_below="@+id/newTitle" 
      android:layout_marginBottom="@dimen/ten_dp"> 
</com.customView.CustomViewPager> 

这里是适配器

public class ViewPagerAdapter extends FragmentPagerAdapter { 
private final List<Fragment> mFragmentList = new ArrayList<>(); 
private final List<String> mFragmentTitleList = new ArrayList<>(); 

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

@Override 
public Fragment getItem(int position) {`enter code here` 

    return mFragmentList.get(position); 
} 

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

public void addFrag(Fragment fragment, String title) { 
    mFragmentList.add(fragment); 
    mFragmentTitleList.add(title); 
} 


@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    return super.instantiateItem(container, position); 
} 
} 

主要片段,该片段显示ViewPager

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


    setupViewPager(customViewPager); 
    customViewPager.setPagingEnabled(false); 

    return view; 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager()); 
    adapter.addFrag(new NewOrderFragmentFirstPage(), NewOrderFragmentFirstPage.class.getName()); 
    adapter.addFrag(new NewOrderFragmentSecondPage(), NewOrderFragmentFirstPage.class.getName()); 
    adapter.addFrag(new NewOrderFragmentThirdPage(), NewOrderFragmentThirdPage.class.getName()); 
    viewPager.setAdapter(adapter); 
} 

public void onClick(View view) { 
    switch (view.getId()) { 
     case R.id.txt_Next: 
      txt_Previous.setVisibility(View.VISIBLE); 
      if (count < 3) { 
       count++; 
      } 
      customViewPager.setCurrentItem(customViewPager.getCurrentItem() + 1); 
      textView.setText(count + "/3"); 
      break; 
     case R.id.txt_previous: 
      if (count > 1) { 
       count--; 
      } 
      if (count == 1) { 
       txt_Previous.setVisibility(View.INVISIBLE); 
      } 
      customViewPager.setCurrentItem(customViewPager.getCurrentItem() - 1); 
      textView.setText(count + "/3"); 
      break; 
    } 
} 

请帮助。 感谢

+0

您要添加在viewpager 3分个人的情况下,每一个是dealed作为单独片段所以onCreateView将被要求所有 –

+0

好的,但我需要所有三个片段bacause按钮单击我必须显示第二个和第三个。解决办法是什么。我已更新我的代码,请检查。 –

+0

没有Aditi的解决方案为你工作? –

回答

0

您可以添加你想要执行的onActivityCreated只有单一的时间(),这将阻止其呼叫从所有的3个片段代码