【问题标题】:Replacing a fragment with other fragment is giving me some issue用其他片段替换片段给了我一些问题
【发布时间】:2016-02-15 01:05:09
【问题描述】:

我正在使用 ViewPager 创建滑动屏幕,其中我有两个片段要使用 FragmentActivity 中的滑动显示。请考虑以下代码:

Fragment_One.java

  public class Fragment_One extends Fragment {

    private Button btnNext;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_one,null);
        btnNext = (Button) v.findViewById(R.id.btnNext);
        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment fragment = new Fragment_Two();
                FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragmentOne,fragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
            }
        });
        return v;
    }
}

2.Fragment_Two.java

 public class Fragment_Two extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_two,null);
    }
}

3. PagerAdapter.java

 public class PagerAdapter extends FragmentPagerAdapter {

    List<Fragment> listFragments ;
    public PagerAdapter(FragmentManager fm,List<Fragment> listFragments) {
        super(fm);
        this.listFragments = listFragments;
    }

    @Override
    public Fragment getItem(int i) {
        return listFragments.get(i);
    }

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

4.MainActivity.java

 public class MainActivity extends FragmentActivity{
        private List<Fragment> listFragments;
        private ViewPager viewPager;

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

            viewPager = (ViewPager) findViewById(R.id.viewPager);

            Fragment_One fragment_one = new Fragment_One();
            Fragment_Two fragment_two = new Fragment_Two();

            listFragments = new ArrayList<>();
            listFragments.add(fragment_one);
            listFragments.add(fragment_two);

            PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(),listFragments);
            viewPager.setAdapter(pagerAdapter);

        }
    }

上面提到的代码在滑动屏幕时工作正常。但是我点击下一个按钮,片段被另一个片段替换但显示在同一屏幕上。我无法解决这个问题。屏幕截图如下:

下一步按钮的工作方式应该与我们滑动屏幕的方式相同。请帮我解决问题。

【问题讨论】:

    标签: android android-viewpager fragmenttransaction


    【解决方案1】:

    这不是更容易使用吗:

    .setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) 
                {
                     viewPager .setCurrentItem(viewPage.getCurrentItem() + 1);
    
                });
    

    【讨论】:

    • 请告诉我如何在点击按钮时使用它。
    • 有时会发生。无论如何感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多