将片段添加到viewPager的片段中

时间:2015-05-19 20:03:32

标签: java android android-fragments

我有一个包含3个片段的viewpager(相同的布局 - 一些EditText和Buttons),我想在viewpager片段上面动态添加小片段,写入内容然后隐藏它。

这就是我的尝试:

MainActivity.java:

public class MainActivity extends FragmentActivity {

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

        ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
        pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
    }

    private class MyPagerAdapter extends FragmentPagerAdapter {

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

        @Override
        public Fragment getItem(int pos) {
            switch(pos) {
                case 0: return MainFragment.newInstance("1");
                case 1: return MainFragment.newInstance("2");
                case 2: return MainFragment.newInstance("3");
                default: return MainFragment.newInstance("");
            }
        }

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

MainFragment.java:

public class MainFragment extends android.support.v4.app.Fragment {

    EditText contentEdit;
    String content, ID;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ID = getArguments().getString("msg");
    }

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

        contentEdit = (EditText) view.findViewById(R.id.editText);

        contentEdit.setOnTouchListener(new OnSwipeTouchListener(getActivity()) {
              public void onSwipeBottom() {
                  final ViewGroup newView = (ViewGroup) LayoutInflater.from(getActivity()).inflate(R.layout.fragment_title, container, false);

                  newView.findViewById(R.id.delete_button).setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View view) {
                          container.removeView(newView);
                      }
                  });
                  container.addView(newView, 0);
              }

            public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        });
        return view;
    }
}

1 个答案:

答案 0 :(得分:0)

尝试将框架布局放在viewPager布局上方但是将它的可见性设置为GONE因此它不会“存在”。现在在你的寻呼机onItemClick监听器中,你想要显示调用findViewByID(R.id.YourFrameLayout).setVisibility(View.VISIBLE);当你想隐藏它时,你就会明白这一点。不要忘记将您的片段添加到该容器中,例如YourFrameLayout

相关问题