c'est mon fragment enfant et comment accéder à mon fragment parent à partir de ce fragment, aidez-moi à le réparer
public class Profilefragmant extends Fragment {
public Profilefragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.profile_layout, container, false);
TextView VE = (TextView) rootView.findViewById(R.id.profile_view_enquiry);
VE.setOnClickListener(new View.OnClickListener(){
public void onClick (View view){
Fragment fragment = null;
fragment = new Enquiryfragment();
replaceFragment(fragment);
}
});
return rootView;
}
public void replaceFragment(Fragment someFragment) {
Android.support.v4.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.containerView, someFragment);
transaction.addToBackStack(null);
transaction.commit();
}
}
c'est mon erreur lors de l'exécution du projet
Java.lang.IllegalArgumentException: No view found for id 0x7f0c0099 (com.knrmarine.knr:id/containerView) for fragment EnquiryActivity{3754711 #2 id=0x7f0c0099}
Ceci est mon code Enquiryfragment
:
public class Enquiryfragmant extends Fragment {
public Enquiryfragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.enquiry_layout, container, false);
return rootView;}}
Vous pouvez obtenir la référence d'un parent Fragment
en:
ParentFragment parentFrag = ((ParentFragment)ChildFragment.this.getParentFragment());
parentFrag.someMethod();
Je l'ai utilisé dans mon ViewPager. Si vous avez d'autres exigences, Interface
ou EventBus
sont deux des plus générales.
Réponse tardive, mais il existe un moyen assez simple d'accéder au fragment parent d'un fragment:
Kotlin
(parentFragment as YourParentFragment).parentFragmentMethod()
Java
((YourParentFragment) getParentFragment()).parentFragmentMethod();
La méthode ci-dessus n'a pas fonctionné pour moi (API 26). J'ai découvert une nouvelle solution ici:
Fragment fragment = getActivity().getSupportFragmentManager().findFragmentByTag("MyFragment");
if(fragment != null && fragment instanceof MyFragment)
((MyFragment) fragment).someMethod();
else
Log.e(TAG, "cannot change tab its null...");