Я новичок Android. Я хочу общаться с помощью интерфейса следующим образом, но он не работает должным образом. Нулевая точка продолжает возникать. Я использовал фрагмент просмотра, чтобы организовать фрагмент вкладки, состоящий из родителей и детей. Я хочу отправить некоторые данные от родителей детям. Но это не легко.
Я не уверен почему. Я прикрепляю свой код вместе. Можете ли вы сказать мне, где я не прав?!
Родительский фрагмент
public class fragment_menu_2_category extends Fragment implements ViewPager.OnPageChangeListener{
public static Object Test_Listener;
ImageView menu_2_category_open_btn;
//interface
private CustomListener customListener;
public interface CustomListener{
void onPositiveClicked(String name);
}
public void setListener(CustomListener customDialogListener){
this.customListener = customDialogListener;
}
static String test_bundel="";
public static int a = 0;
public static fragment_menu_2_category newInstance()
{
return new fragment_menu_2_category();
}
private ViewPager mViewPager;
SectionPageAdapter adapter;
fragment_menu_2_category_Outer fragment_menu_2_category_outer;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_category, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mViewPager = (ViewPager) view.findViewById(R.id.container11);
adapter = new SectionPageAdapter(getChildFragmentManager());
adapter.addFragment(new fragment_menu_2_category_All(), "ALL");
adapter.addFragment(new fragment_menu_2_category_Outer(), "OUTER");
adapter.addFragment(new fragment_menu_2_category_Top(), "TOP");
adapter.addFragment(new fragment_menu_2_category_Skirt(), "SKIRT");
adapter.addFragment(new fragment_menu_2_category_Pants(), "PANTS");
adapter.addFragment(new fragment_menu_2_category_Onepiece(), "ONEPIECE");
mViewPager.setAdapter(adapter);
mViewPager.setOffscreenPageLimit(3);
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
menu_2_category_open_btn = view.findViewById(R.id.menu_2_category_open_btn);
menu_2_category_open_btn.setOnClickListener(open_category);
}
View.OnClickListener open_category = new View.OnClickListener() {
@Override
public void onClick(View v) {
category_dialog category_dialog = new category_dialog(getContext(), R.layout.menu_2_category_dialog);
category_dialog.show();
category_dialog.setDialogListener(new category_dialog.CustomDialogListener() {
@Override
public void onPositiveClicked(String name) {
category_dialog.dismiss();
String test_date = "test date";
customListener.onPositiveClicked(test_date);
fragment_menu_2_category_Outer fragment_menu_2_category_outer = new fragment_menu_2_category_Outer();
adapter.replaceFragment(1, fragment_menu_2_category_outer,"OUTER");
//뷰페이저
mViewPager.setCurrentItem(1, true);
adapter.notifyDataSetChanged();
}
});
}
};
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
adapter.notifyDataSetChanged();
}
}
Детский фрагмент
public class fragment_menu_2_category_Outer extends Fragment {
RecyclerView category_name_recyclerview;
fragment_menu_2_category_name_Adapter name_adapter;
ArrayList<fragment_menu_2_category_name_Array> name_array;
RecyclerView outer_category_product_recyclerview;
fragment_menu_2_category_Adapter outer_category_adapter;
ArrayList<fragment_menu_2_category_Array> outer_category_array;
int get_category_position = 0;
public static fragment_menu_2_category_Outer newInstance(String name)
{
fragment_menu_2_category_Outer fragment = new fragment_menu_2_category_Outer();
Bundle args = new Bundle();
args.putString("key", name);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getArguments()!=null){
a = getArguments().getString("key");
}
}
@Override
public void onResume() {
super.onResume();
fragment_menu_2_category fragment_menu_2_category = new fragment_menu_2_category();
fragment_menu_2_category.setListener(new fragment_menu_2_category.CustomListener() {
@Override
public void onPositiveClicked(String name11) {
Log.d("Test", name11);
}
});
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_menu_2_category_outer, container, false);
}
ViewPagerAdapter
public class SectionPageAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public SectionPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE;
}
public void replaceFragment(int index, Fragment fragment, String title) {
if(index==1)
{
mFragmentList.set(index, fragment);
}
mFragmentTitleList.set(index, title);
}
}