从片段onClick()切换到片段

时间:2017-06-24 09:01:23

标签: java android android-fragments

我正在尝试创建一个与Snapchat相似的框架,我有三个可以刷过的屏幕。我有三个屏幕(每个屏幕都有一个片段),并希望在按下按钮时滑到屏幕上。为了清楚起见,我在一个屏幕上有一个表,可以从中单击一行,并且具有一个调用onClick()的函数。我希望使用上述功能滑动到所需的片段。

Fragment.Java:

public class ChatFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.chat_fragment_layout, container, false);
        rootView.findViewById(R.id.row0).setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                openfrag("1");
            }
        });
        rootView.findViewById(R.id.row1).setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                openfrag("2");
            }
        });
        rootView.findViewById(R.id.row2).setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                openfrag("3");
            }
        });

        return rootView;
    }
    private void openfrag(String number){
    }

我使用扩展FragmentPagerAdapter的PagerAdapter来浏览片段:

public class PagerAdapter extends FragmentPagerAdapter {

    public PagerAdapter(FragmentManager fm) {
        super(fm);

    }

    @Override
    public Fragment getItem(int arg0) {
        switch (arg0) {
            case 0:

                return new MessageFragment();
            case 1:
                return new ChatFragment();
            case 2:
                return new CameraFragment();
            default:
                break;
        }
        return null;
    }

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

我已经尝试过使用fragmentmanager的替换方法,但这不是我想要的,我希望它像我刷到那个片段一样。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用这个给定的代码

        String tag = "android:switcher:" + R.id.pager + ":" + 0;
        AddStudentFragment f = (AddStudentFragment) getActivity().getSupportFragmentManager().findFragmentByTag(tag);
        String tag1 = "android:switcher:" + R.id.pager + ":" + 1;
        AssignSubjectFragment a = (AssignSubjectFragment) getActivity().getSupportFragmentManager().findFragmentByTag(tag1);

答案 1 :(得分:0)

我设法让它在onCreate方法之外的MainActivity类中添加一小部分。每当您需要切换到寻呼机中的另一个片段时,只需使用项索引和真/假调用此函数,具体取决于您是否希望它平滑滚动。

public void setCurrentItem (int item, boolean smoothScroll) {
        mViewPager.setCurrentItem(item, smoothScroll);
    }