我们首先需要在FragmentManager中为每个Fragment创建一个tag,然后在Activity中为每个tag创建相应的RecyclerView。在Fragment中,我们可以通过onAttach和onDetach方法来获取Activity中相应的RecyclerView,并根据需要执行不同的操作。
下面是一个示例代码:
MainActivity.java
public class MainActivity extends AppCompatActivity {
private RecyclerView fragment1RecyclerView;
private RecyclerView fragment2RecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取各个Fragment的tag
String tag1 = "fragment1";
String tag2 = "fragment2";
// 创建RecyclerView
fragment1RecyclerView = findViewById(R.id.fragment1RecyclerView);
fragment2RecyclerView = findViewById(R.id.fragment2RecyclerView);
// 将RecyclerView添加到FragmentManager中
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment1 fragment1 = new Fragment1();
Fragment2 fragment2 = new Fragment2();
ft.add(R.id.fragmentContainer, fragment1, tag1);
ft.add(R.id.fragmentContainer, fragment2, tag2);
ft.commit();
}
// 通过tag获取对应的RecyclerView
public RecyclerView getRecyclerView(String tag) {
if (tag.equals("fragment1")) {
return fragment1RecyclerView;
} else if (tag.equals("fragment2")) {
return fragment2RecyclerView;
}
return null;
}
}
Fragment1.java
public class Fragment1 extends Fragment {
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
recyclerView = ((MainActivity) getActivity()).getRecyclerView("fragment1");
// 在这里执行Fragment1需要的操作
return view;
}
@Override
public void onDetach() {
super.onDetach();
recyclerView = null;
}
}
Fragment2.java
public class Fragment2 extends Fragment {
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,