i replacing fragments this:
@override public void onnavigationdraweritemselected(int position) { fragmentmanager = getsupportfragmentmanager(); android.support.v4.app.fragmenttransaction fragmenttransaction = fragmentmanager.begintransaction(); fragment newfragment = null; string tag = ""; switch (position) { case 0: newfragment = new myfragment(); tag = "termine"; break; case 1: newfragment = new mymapfragment(); tag = "map"; break; case 2: newfragment = new searchfragment(); tag = "search"; break; case 3: break; case 4: newfragment = new settingsfragment(); tag = "settings"; break; case 5: newfragment = new aboutfragment(); tag = "about"; break; } if (newfragment != null) { getsupportfragmentmanager().begintransaction() .replace(r.id.container, newfragment, tag) .addtobackstack(null) .commit(); } }
my gradle file:
buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' repositories { maven { url 'https://maven.fabric.io/public' } } android { compilesdkversion 23 buildtoolsversion '23.0.3' // uselibrary 'org.apache.http.legacy' defaultconfig { applicationid "com.myapp.coolapp" minsdkversion 16 targetsdkversion 23 multidexenabled true vectordrawables.usesupportlibrary = true } buildtypes { release { minifyenabled false proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.txt' zipalignenabled true shrinkresources true } } dexoptions { javamaxheapsize "4g" } } dependencies { compile filetree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support:multidex:1.0.1' compile 'com.android.support:recyclerview-v7:23.4.0' compile 'com.android.support:cardview-v7:23.4.0' compile 'com.google.android.gms:play-services:8.4.0' compile 'com.github.paolorotolo:appintro:3.4.0' compile 'com.prolificinteractive:material-calendarview:1.3.0' compile 'me.grantland:autofittextview:0.2.+' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.sothree.slidinguppanel:library:3.3.0' compile 'com.plattysoft.leonids:leonidslib:1.3.1' compile 'com.github.halysongoncalves:pugnotification:1.8.1' compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.github.amlcurran.showcaseview:library:5.4.3' compile 'it.sephiroth.android.library.targettooltip:target-tooltip-library:+' compile 'com.mikepenz:iconics-core:2.2.0@aar' compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar' compile 'se.emilsjolander:stickylistheaders:2.7.0' compile('com.crashlytics.sdk.android:crashlytics:2.5.6@aar') { transitive = true; } compile('com.mikepenz:aboutlibraries:5.6.6@aar') { transitive = true } compile('com.crashlytics.sdk.android:answers:1.3.7@aar') { transitive = true; } }
activity_main.xml
<android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/myprimarycolor" android:fitssystemwindows="true"> <linearlayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.toolbar android:id="@+id/toolbar_actionbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minheight="?attr/actionbarsize" app:theme="@style/toolbarstyle" /> <framelayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true"> </framelayout> </linearlayout> <fragment android:id="@+id/fragment_drawer" android:name="com.myapp.coolapp.navigationdrawer.navigationdrawerfragment" android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" app:layout="@layout/fragment_navigation_drawer" /> </android.support.v4.widget.drawerlayout>
navigationdrawerfragment.java
public class navigationdrawerfragment extends fragment implements navigationdrawercallbacks { /** * remember position of selected item. */ private static final string state_selected_position = "selected_navigation_drawer_position"; /** * per design guidelines, should show drawer on launch until user manually * expands it. shared preference tracks this. */ private static final string pref_user_learned_drawer = "navigation_drawer_learned"; /** * pointer current callbacks instance (the activity). */ private navigationdrawercallbacks mcallbacks; /** * helper component ties action bar navigation drawer. */ public actionbardrawertoggle mactionbardrawertoggle; private drawerlayout mdrawerlayout; private recyclerview mdrawerlist; private view mfragmentcontainerview; private int mcurrentselectedposition = 0; private boolean mfromsavedinstancestate; private boolean muserlearneddrawer; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // read in flag indicating whether or not user has demonstrated awareness of // drawer. see pref_user_learned_drawer details. sharedpreferences sp = preferencemanager.getdefaultsharedpreferences(getactivity()); muserlearneddrawer = sp.getboolean(pref_user_learned_drawer, false); if (savedinstancestate != null) { mcurrentselectedposition = savedinstancestate.getint(state_selected_position); mfromsavedinstancestate = true; } } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.fragment_navigation_drawer, container, false); mdrawerlist = (recyclerview) view.findviewbyid(r.id.drawerlist); linearlayoutmanager layoutmanager = new linearlayoutmanager(getactivity()); layoutmanager.setorientation(linearlayoutmanager.vertical); mdrawerlist.setlayoutmanager(layoutmanager); mdrawerlist.sethasfixedsize(true); final list<navigationitem> navigationitems = getmenu(); navigationdraweradapter adapter = new navigationdraweradapter(navigationitems); adapter.setnavigationdrawercallbacks(this); mdrawerlist.setadapter(adapter); selectitem(mcurrentselectedposition); return view; } public boolean isdraweropen() { return mdrawerlayout != null && mdrawerlayout.isdraweropen(mfragmentcontainerview); } public actionbardrawertoggle getactionbardrawertoggle() { return mactionbardrawertoggle; } public drawerlayout getdrawerlayout() { return mdrawerlayout; } @override public void onnavigationdraweritemselected(int position) { if (position != 3) { selectitem(position); } } public list<navigationitem> getmenu() { list<navigationitem> items = new arraylist<navigationitem>(); items.add(new navigationitem(getresources().getstring(r.string.nav_title1))); items.add(new navigationitem(getresources().getstring(r.string.nav_title2))); items.add(new navigationitem(getresources().getstring(r.string.nav_title3))); items.add(new navigationitem("")); items.add(new navigationitem(getresources().getstring(r.string.nav_title4))); items.add(new navigationitem(getresources().getstring(r.string.nav_title5))); return items; } /** * users of fragment must call method set navigation drawer interactions. * * @param fragmentid android:id of fragment in activity's layout. * @param drawerlayout drawerlayout containing fragment's ui. * @param toolbar toolbar of activity. */ public void setup(int fragmentid, drawerlayout drawerlayout, toolbar toolbar) { mfragmentcontainerview = getactivity().findviewbyid(fragmentid); mdrawerlayout = drawerlayout; mdrawerlayout.setstatusbarbackgroundcolor(getresources().getcolor(r.color.myprimarydarkcolor)); mactionbardrawertoggle = new actionbardrawertoggle(getactivity(), mdrawerlayout, toolbar, r.string.drawer_open, r.string.drawer_close) { @override public void ondrawerclosed(view drawerview) { super.ondrawerclosed(drawerview); if (!isadded()) return; getactivity().invalidateoptionsmenu(); } @override public void ondraweropened(view drawerview) { super.ondraweropened(drawerview); if (!isadded()) return; if (!muserlearneddrawer) { muserlearneddrawer = true; sharedpreferences sp = preferencemanager .getdefaultsharedpreferences(getactivity()); sp.edit().putboolean(pref_user_learned_drawer, true).apply(); } getactivity().invalidateoptionsmenu(); // calls onprepareoptionsmenu() } }; mdrawerlayout.post(new runnable() { @override public void run() { mactionbardrawertoggle.syncstate(); } }); mdrawerlayout.setdrawerlistener(mactionbardrawertoggle); } private void selectitem(int position) { mcurrentselectedposition = position; if (mdrawerlayout != null) { mdrawerlayout.closedrawer(mfragmentcontainerview); } if (mcallbacks != null) { mcallbacks.onnavigationdraweritemselected(position); } } public void opendrawer() { mdrawerlayout.opendrawer(mfragmentcontainerview); } public void closedrawer() { mdrawerlayout.closedrawer(mfragmentcontainerview); } @override public void onattach(context context) { super.onattach(context); try { mcallbacks = (navigationdrawercallbacks) context; } catch (classcastexception e) { throw new classcastexception("activity must implement navigationdrawercallbacks."); } } @override public void ondetach() { super.ondetach(); mcallbacks = null; } @override public void onsaveinstancestate(bundle outstate) { super.onsaveinstancestate(outstate); outstate.putint(state_selected_position, mcurrentselectedposition); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); // forward new configuration drawer toggle component. mactionbardrawertoggle.onconfigurationchanged(newconfig); } }
on devices android 6.0 works perfect, way should on devices < 6.0 app starts without problems content of fragment isn't replaced. fragments don't think fragment layout's problem.
what wrong configuration?