Unable to replace/navigate fragments

前端 未结 2 2056
深忆病人
深忆病人 2020-12-18 09:50

I am trying to navigate from one fragment to another. These two fragments are 100% different, there is no ViewPager or something like that to connect them. Here

相关标签:
2条回答
  • 2020-12-18 10:39

    You are trying to replace firstView with the new fragment, but firstView is not a fragment, its' a RelativeLayout.

    You cannot replace a fragment defined statically in the layout file. You can only replace fragments that you added dynamically via a FragmentTransaction.

    None of your Layout contains fragment in layout.

    <fragment
            android:id="@+id/fragment1"
            android:layout_width="march_parent"
            android:layout_height="match_parent"></fragment>
    

    A new Fragment will replace an existing Fragment that was previously added to the container.

    Take look on this.

    0 讨论(0)
  • 2020-12-18 10:44

    If you need to replace one fragment with another then fallow undermentioned :

    TalkDetail fragment = new TalkDetail(); 
    // TalkDetail is name of fragment which you need to put while replacing older one.
    Bundle bundle = new Bundle();
    
                        bundle.putString("title", m_ArrayList.get(arg2).title);
                        bundle.putString("largeimg", m_ArrayList.get(arg2).largeimg);
                        bundle.putString("excert", m_ArrayList.get(arg2).excert);
                        bundle.putString("description", m_ArrayList.get(arg2).description);
                        bundle.putString("cat", m_ArrayList.get(arg2).cat);
                        bundle.putString("header_title", "Talk");
                        //bundle.putInt("postid", m_ArrayList.get(arg2).postid);
    
                        fragment.setArguments(bundle);                  ((BaseContainerFragment)getParentFragment()).replaceFragment(fragment, true);
    

    Here's your BaseContainerFragment.java class that will manage a lot of stuff for you.

    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentTransaction;
    import android.util.Log;
    import app.drugs.talksooner.R;
    
    public class BaseContainerFragment extends Fragment {
    
        public void replaceFragment(Fragment fragment, boolean addToBackStack) {
            FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
            if (addToBackStack) {
                transaction.addToBackStack(null);
            }
            transaction.replace(R.id.container_framelayout, fragment);
            transaction.commit();
            getChildFragmentManager().executePendingTransactions();
        }
    
        public boolean popFragment() {
            Log.e("test", "pop fragment: " + getChildFragmentManager().getBackStackEntryCount());
            boolean isPop = false;
            if (getChildFragmentManager().getBackStackEntryCount() > 0) {
                isPop = true;
                getChildFragmentManager().popBackStack();
            }
            return isPop;
        }
    
    }
    

    For more specific details find my complete post over here ..

    Dynamically changing the fragments inside a fragment tab host?

    0 讨论(0)
提交回复
热议问题