Map
조각에서 myfunction()
까지 조각에 액세스하려고합니다. 상위 단편 Tabs
에 위치합니다.하위 조각의 부모 조각 메서드에 액세스하십시오.
Tabs parentFragment = (Tabs) getParentFragment();
다음 줄을 시도했지만 parentFragment가 null입니다.
나는이 주제에 관한 모든 주제를 읽었지만 아무도 나를 도왔습니다 ... (어쩌면 내가 그들을 오해 한 후에).
조각 나는 부모의 메소드를 호출하려는 :
나는 다음과 같은 파일이 있습니다.
public class Map extends Fragment {
View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.map_fragment, container, false);
Tabs parentFragment = (Tabs) getParentFragment();
parentFragment.myfunction();
// it crash because parentFragment is null...
return rootView;
}
}
하여 myFunction() 메소드를 포함하는 상위의 조각.
public class Tabs extends Fragment {
private View rootview;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
rootview = inflater.inflate(R.layout.tabs, container, false);
TabLayout tabLayout = (TabLayout) rootview.findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) rootview.findViewById(R.id.pager);
Context context = (HomeContainer)getContext();
final TabsAdapter adapter = new TabsAdapter
(getActivity().getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(3);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
return rootview;
}
// the function I desire to call
public void myfunction(){
}
}
TabsAdapter
(Map
단편이기 때문에 탭) .
public class TabsAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public TabsAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Map tab1 = new Map();
return tab1;
case 1:
Settings tab2 = new Settings();
return tab2;
case 2:
Others tab3 = new Others();
return tab3;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
저는 비교적 안드로이드에 새로운 것이므로 약간 분실했습니다! 미리 도움을 주셔서 감사합니다.
방금 시도했지만 여전히 동일한 오류가 발생했습니다 ... – Bobo159951
또한 getSupportFragmentManager를 getChildFragmentManager로 교체하십시오. 이것이 바로 주요 문제입니다. – natario
당신은 영웅입니다! 정말 고마워! – Bobo159951