Открыть фрагмент диалога из дочернего фрагмента из Уведомления - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть MainActivity, в которой есть viewpager, содержащий фрагменты хоста (которые могут содержать другие фрагменты с помощью дочернего менеджера фрагментов).То, чего я пытаюсь добиться, - это запустить фрагмент диалога из одного из дочерних фрагментов при щелчке по уведомлению.Я использую FCM, и уведомление идет с намерением, но когда я пытаюсь добавить дочерний фрагмент, я получаю Фрагмент, не привязанный к действию , в то время как я пытаюсь получить менеджер дочерних фрагментов.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        addFrags();//adding fragments to the viewpager
        Bundle bundle = getIntent().getExtras();
        if (bundle.containsKey(ARG_ACTION_ID)) {
            mAction = (Action) bundle.getSerializable(ARG_ACTION_ID);
        }
}

@Override
    protected void onStart() {
        super.onStart();
        switch (mAction) {
            case EDIT_TFR: {
                mViewPager.setCurrentItem(2);//this much is happening, it will go to the 3rd page of viewpager if i didnt do the rest.
                onFragmentInteraction(id);
                break;
            }
        }
}
// this is an interface i use to interact with the acticity from my child fragment, which is also the one i am calling from onstart
@Override
public void onFragmentInteraction(String id) {
    HostFragment hostFragment = (HostFragment) mPagerAdapter.getItem(2);
    Fragment contentfragment = NewFrag.newInstance(id);
    hostFragment.addFragment(contentFragment, true);
}

Это метод addFragent внутри HostFragment

public void addFragment(Fragment fragment, boolean addToBackstack) {
    FragmentManager fm = this.getChildFragmentManager(); //this is were i am getting the error
    FragmentTransaction fragmentTransaction = fm.beginTransaction();
    fragmentTransaction.add(id.hosted_fragment, fragment);
    if (addToBackstack) {
        fragmentTransaction.addToBackStack((String)null);
    }

    fragmentTransaction.commit();
    fm.executePendingTransactions();
}

Я планировал планировать вызов публичного метода внутри NewFrag, который откроет диалоговое окно.

Я знаю, что фрагмент может быть не прикреплен к этому времени.Пожалуйста, дайте мне знать, как мне этого добиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...