Подтвердить что ты не робот

Доступ к родительскому фрагменту дочерним фрагментом

это мой дочерний фрагмент и как получить доступ к моему родительскому фрагменту из этого фрагмента, пожалуйста, помогите мне исправить его

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();
}
}

это моя ошибка при запуске проекта

 java.lang.IllegalArgumentException: No view found for id 0x7f0c0099 (com.knrmarine.knr:id/containerView) for fragment EnquiryActivity{3754711 #2 id=0x7f0c0099} 

Этот мой код 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;}}
4b9b3361

Ответ 1

Вы можете получить исходную ссылку Fragment:

ParentFragment parentFrag = ((ParentFragment)ChildFragment.this.getParentFragment());
parentFrag.someMethod();

Я использовал это в своем ViewPager. Если у вас есть другое требование, Interface или EventBus являются двумя из общих.

Ответ 2

Поздний ответ, но есть довольно простой способ получить доступ к фрагменту родительского фрагмента:

Котлин

(parentFragment as YourParentFragment).parentFragmentMethod()

Джава

((YourParentFragment) getParentFragment()).parentFragmentMethod();

Ответ 3

Выше метод не работал для меня (API 26). Я нашел новое решение здесь:

Fragment fragment = getActivity().getSupportFragmentManager().findFragmentByTag("MyFragment");

if(fragment != null && fragment instanceof MyFragment)
     ((MyFragment) fragment).someMethod();
else
     Log.e(TAG, "cannot change tab its null...");

Ответ 4

Доступ к методу родительского фрагмента из дочернего фрагмента

((YourParentFragmentName) getParentFragment()).yourParentFragmentMethod();

Доступ к методу дочернего фрагмента из родительского фрагмента

YourChildFragmentName fragment = (YourChildFragmentName) getChildFragmentManager().getFragments().get(positionOfYourChildFragment);
fragment.yourChildFragmentMethod();