Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段的内容被复制到另一个片段_Android_Android Recyclerview - Fatal编程技术网

Android 片段的内容被复制到另一个片段

Android 片段的内容被复制到另一个片段,android,android-recyclerview,Android,Android Recyclerview,我对RecyclerView和Fragment有问题。我有4个选项卡,每个选项卡包含一个RecyclerView。 我的问题是,我在不同的选项卡上看到相同的结果,看起来片段正在被复制 我的主要活动: Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolBar); final ViewPager viewPager = (ViewPager) findViewById(R.id.main_pager); TabLayout

我对RecyclerView和Fragment有问题。我有4个选项卡,每个选项卡包含一个RecyclerView。 我的问题是,我在不同的选项卡上看到相同的结果,看起来片段正在被复制

我的主要活动:

Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolBar);
    final ViewPager viewPager = (ViewPager) findViewById(R.id.main_pager);
    TabLayout tabLayout = (TabLayout) findViewById(R.id.main_tabLayout);


    setSupportActionBar(toolbar);

    MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getSupportFragmentManager());

    fragmentInvite = new InviteFragment();
    attendingFragment = new AttendingFragment();
    notAttendingFragment = new NotAttendingFragment();
    maybeFragment = new MaybeFragment();
    adapter.addFragment(fragmentInvite, "first");
    adapter.addFragment(attendingFragment, "second");
    adapter.addFragment(notAttendingFragment, "third");
    adapter.addFragment(maybeFragment, "fourth");

    viewPager.setAdapter(adapter);
    tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.setupWithViewPager(viewPager);
我的片段适配器:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {

    private ArrayList<Fragment> fragments = new ArrayList<>();
    private ArrayList<String> titles = new ArrayList<>();

    public void addFragment(Fragment fragment, String title){
        fragments.add(fragment);
        titles.add(title);
    }

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

    @Override
    public Fragment getItem(int position) {

        return fragments.get(position);
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        return titles.get(position);
    }
}
第三段:

public class InviteFragment extends Fragment {

    private RecyclerView rv_invite;
    private Button btn_done;
    private List<String> numbers;
    private AlertDialog ratingDialog;
    private String message;
    public  ArrayList<Contact> contacts;
    private LinearLayoutManager mLayoutManager;

    private rvAdapter mAdapter;


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

        numbers = new ArrayList<>();
        contacts = new ArrayList<>();
        //find done button
        btn_done = (Button) view.findViewById(R.id.btn_done);
        //find listview
        rv_invite = (RecyclerView) view.findViewById(R.id.rv_invite);
        //get contacts list

        setContacts(numbers);
        //sorting the contact list
        Collections.sort(contacts);

        // use a linear layout manager
        mLayoutManager = new LinearLayoutManager(getActivity().getBaseContext());
        //mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        rv_invite.setLayoutManager(mLayoutManager);

        // specify an adapter (see also next example)
        mAdapter = new rvAdapter(contacts);

        rv_invite.setAdapter(mAdapter);
        return view;
    }
public class AttendingFragment extends Fragment {

    private Button btn_resend;
    private RecyclerView attending;
    private LinearLayoutManager mLayoutManager;
    private rvAdapter mAdapter;

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

        attending = (RecyclerView) v.findViewById(R.id.attending_recycler_view);


        // use a linear layout manager
        mLayoutManager = new LinearLayoutManager(getActivity().getBaseContext());
        attending.setLayoutManager(mLayoutManager);

        // specify an adapter (see also next example)
        mAdapter = new rvAdapter(MainActivity.attending);
        attending.setAdapter(mAdapter);

        return  v;
    }
public class NotAttendingFragment extends Fragment {

    private RecyclerView rv_not_attending;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v= inflater.inflate(R.layout.fragment_not_attending, container, false);

        rv_not_attending = (RecyclerView) v.findViewById(R.id.not_attending_recycler_view);


        // use a linear layout manager
        mLayoutManager = new LinearLayoutManager(getActivity().getBaseContext());
        rv_not_attending.setLayoutManager(mLayoutManager);


        // specify an adapter (see also next example)
        mAdapter = new rvAdapter(MainActivity.not_attending);
        rv_not_attending.setAdapter(mAdapter);


        return  v;
    }
public class MaybeFragment extends Fragment {


    private List<Boolean> status;
    private RecyclerView rv_maybe;
    private LinearLayoutManager mLayoutManager;
    private rvAdapter mAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v= inflater.inflate(R.layout.fragment_maybe, container, false);
        rv_maybe = (RecyclerView) v.findViewById(R.id.maybe_recycler_view);


        // use a linear layout manager
        mLayoutManager = new LinearLayoutManager(getActivity().getBaseContext());
        rv_maybe.setLayoutManager(mLayoutManager);

        // specify an adapter (see also next example)
        mAdapter = new rvAdapter(MainActivity.maybe);

        rv_maybe.setAdapter(mAdapter);
        return v;
    }
第四段:

public class InviteFragment extends Fragment {

    private RecyclerView rv_invite;
    private Button btn_done;
    private List<String> numbers;
    private AlertDialog ratingDialog;
    private String message;
    public  ArrayList<Contact> contacts;
    private LinearLayoutManager mLayoutManager;

    private rvAdapter mAdapter;


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

        numbers = new ArrayList<>();
        contacts = new ArrayList<>();
        //find done button
        btn_done = (Button) view.findViewById(R.id.btn_done);
        //find listview
        rv_invite = (RecyclerView) view.findViewById(R.id.rv_invite);
        //get contacts list

        setContacts(numbers);
        //sorting the contact list
        Collections.sort(contacts);

        // use a linear layout manager
        mLayoutManager = new LinearLayoutManager(getActivity().getBaseContext());
        //mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        rv_invite.setLayoutManager(mLayoutManager);

        // specify an adapter (see also next example)
        mAdapter = new rvAdapter(contacts);

        rv_invite.setAdapter(mAdapter);
        return view;
    }
public class AttendingFragment extends Fragment {

    private Button btn_resend;
    private RecyclerView attending;
    private LinearLayoutManager mLayoutManager;
    private rvAdapter mAdapter;

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

        attending = (RecyclerView) v.findViewById(R.id.attending_recycler_view);


        // use a linear layout manager
        mLayoutManager = new LinearLayoutManager(getActivity().getBaseContext());
        attending.setLayoutManager(mLayoutManager);

        // specify an adapter (see also next example)
        mAdapter = new rvAdapter(MainActivity.attending);
        attending.setAdapter(mAdapter);

        return  v;
    }
public class NotAttendingFragment extends Fragment {

    private RecyclerView rv_not_attending;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v= inflater.inflate(R.layout.fragment_not_attending, container, false);

        rv_not_attending = (RecyclerView) v.findViewById(R.id.not_attending_recycler_view);


        // use a linear layout manager
        mLayoutManager = new LinearLayoutManager(getActivity().getBaseContext());
        rv_not_attending.setLayoutManager(mLayoutManager);


        // specify an adapter (see also next example)
        mAdapter = new rvAdapter(MainActivity.not_attending);
        rv_not_attending.setAdapter(mAdapter);


        return  v;
    }
public class MaybeFragment extends Fragment {


    private List<Boolean> status;
    private RecyclerView rv_maybe;
    private LinearLayoutManager mLayoutManager;
    private rvAdapter mAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v= inflater.inflate(R.layout.fragment_maybe, container, false);
        rv_maybe = (RecyclerView) v.findViewById(R.id.maybe_recycler_view);


        // use a linear layout manager
        mLayoutManager = new LinearLayoutManager(getActivity().getBaseContext());
        rv_maybe.setLayoutManager(mLayoutManager);

        // specify an adapter (see also next example)
        mAdapter = new rvAdapter(MainActivity.maybe);

        rv_maybe.setAdapter(mAdapter);
        return v;
    }
公共类maybeffragment扩展片段{
私人名单状态;
可能是私人回收站;
私人直线酒店经理;
私人住宅;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图v=充气机。充气(R.layout.fragment_maybe,container,false);
rv_maybe=(RecyclerView)v.findviewbyd(R.id.maybe_recycler_视图);
//使用线性布局管理器
mLayoutManager=newlinearlayoutmanager(getActivity().getBaseContext());
rv_.setLayoutManager(mLayoutManager);
//指定适配器(另请参见下一个示例)
mAdapter=新的rvAdapter(MainActivity.maybe);
rv_.setAdapter(mAdapter);
返回v;
}

考虑到您在MainActivity中正确设置了数组,请尝试更改片段中获取这些值的部分

改变

 mAdapter = new rvAdapter(MainActivity.maybe);

如果更改不起作用,请按照以下说明对结果进行注释。将适配器中的
contacts
字段转换为public,并将这些行插入更改后的frag代码中进行测试。在注释中发布日志

Log.i( this.getClass().getSimpleName(), ">>> AdapterValue: " + mAdapter.contacts );
Log.i( "MainActivity", ">>> MainActvity value :" + ((MainActivity.class)getActivity()).maybe );

问题出在适配器上

@Override
public CustomViewHolder onCreateViewHolder(ViewGroup parent,
                                           int viewType) {
    // create a new view
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.contacts_list_item, parent, false);
    // set the view's size, margins, paddings and layout parameters

    CustomViewHolder vh = new CustomViewHolder(v);

    return vh;
}
应该是:

@Override
public CustomViewHolder onCreateViewHolder(ViewGroup parent,
                                           int viewType) {
    // create a new view
    View v = LayoutInflater.from(ctx)
            .inflate(R.layout.contacts_list_item, parent, false);
    // set the view's size, margins, paddings and layout parameters

    CustomViewHolder vh = new CustomViewHolder(v);

    return vh;
}
从片段传递上下文解决了问题。
当我使用parent.getContext()时,我的详细信息被另一个片段覆盖。

问题描述非常模糊。请尝试重新格式化它。另外,请提供有关recyclerview的代码。当前帖子中没有代码。请尝试明确您的问题是什么。我在不同选项卡上看到相同的片段。我已编辑了问题。谢谢您从您填充或加载反回收适配器的片段中包含反代码包括片段代码谢谢@TinMegali