I know these types of question have already been here but still I have not found my answer for this question:
Here's what I have:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.navigation_drawer); mTitle = getTitle(); // Set up the drawer. mNavigationDrawerFragment.setUp( R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout)); } @Override public void onNavigationDrawerItemSelected(int position) { // update the main content by replacing fragments FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.container, PlaceholderFragment.newInstance(position + 1)) .commit(); } public void onSectionAttached(int number) { switch (number) { case 1: break; case 2: break; case 3: break; } }
And some more here:
public static PlaceholderFragment newInstance(int sectionNumber) { PlaceholderFragment fragment = new PlaceholderFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } @Override public void onAttach(Activity activity) { super.onAttach(activity); ((MainActivity) activity).onSectionAttached( getArguments().getInt(ARG_SECTION_NUMBER)); } }
I want to display another fragment using the button in navigation drawer. I want to use this code so please do not send me any guides or tutorials making their own drawers..
The question is, what do I put in case 1:
case 2:
and case 3:
in case I want to open another fragment? Thanks.
One more question:
How do I add more fragments and transactions? This doesn't work-
Fragment fragment = new MyFragment1(); Fragment frag = new MyFragment2(); FragmentManager fragmentManager = getFragmentManager(); switch(position) { case 0: fragment = new MyFragment1(); break; case 1: frag = new MyFragment2(); break; } fragmentManager.beginTransaction() .replace(R.id.container, fragment).commit();
The drawer icon is displayed on all top-level destinations that use a DrawerLayout . To add a navigation drawer, first declare a DrawerLayout as the root view. Inside the DrawerLayout , add a layout for the main UI content and another view that contains the contents of the navigation drawer.
Right-click the desired fragment and choose Edit. The fragment opens in the Fragment Editor, where you can start making changes to the fragment (see Using the Fragment Editor). When finished, click the Save icon (Figure) in the toolbar (or click File, then select Save).
You should just put a switch statement into the onNavigationDrawerItemSelected
method.
Something like this should work:
public void onNavigationDrawerItemSelected(int position) { // update the main content by replacing fragments Fragment fragment; FragmentManager fragmentManager = getFragmentManager(); // For AppCompat use getSupportFragmentManager switch(position) { default: case 0: fragment = new MyFragment1(); break; case 1: fragment = new MyFragment2(); break; } fragmentManager.beginTransaction() .replace(R.id.container, fragment) .commit(); }
This is just done quickly but I think it should work
I solved this problem over inflater
:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView; switch(getArguments().getInt(ARG_SECTION_NUMBER)) { case 1: rootView = inflater.inflate(R.layout.fragment_obj_detail, container, false); break; case 2: rootView = inflater.inflate(R.layout.fragment_obj_list, container, false); break; case 3: rootView = inflater.inflate(R.layout.fragment_obj_list, container, false); break; case 4: rootView = inflater.inflate(R.layout.fragment_about, container, false); break; default: rootView = inflater.inflate(R.layout.fragment_obj_list, container, false); } return rootView; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With