I know these types of question have already been here but still I have not found my answer for this question:
- I have created an application and used navigation drawer that has been created AUTOMATICLLY by the app (AndroidStudio)
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 to put in case 1:
case 2:
and case 3:
in case I want to open another fragment?
Thanx.
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();
}
It does work in Eclipse IDE
in function
The response of DenisGl, is the right way !!! Using the class member, created by default, you can switch between the various components of the Navigation Drawer !! You have to use the method onCreateView, which are within the class member PlaceholderFragment. This class will be automatically invoked in the method onNavigationDrawerItemSelected
Here is the code example: /This method can be left as it is! It automatically invoke the class PlaceholderFragment!/
This method instead, where you enter the Switch Case:
Obviously, you have to call the layout for each fragment that interests us!
This works 100%, Test to verify!
You need to create a
switch
block inside theonNavigationDrawerItemSelected(
) and use the code that's already there for everycase
but with correspondingFragment
instead ofPlaceholderFragment
. Now it contains a generic piece of code for adding aPlaceholderFragment
to the layout, reuse it for your purposes.I solved this problem over
inflater
:You should just put a switch statement into the
onNavigationDrawerItemSelected
method.Something like this should work:
This is just done quickly but I think it should work