From 7bff693926c4d246d47851fa5a9d6da447176606 Mon Sep 17 00:00:00 2001 From: OliE Date: Sun, 4 Feb 2018 13:45:30 +0100 Subject: [PATCH] - fixed memory leak while switching between fragments. - added help button. - used another graph icon for navigation icons to avoid that the preference tint method is applied to the navigation icon. --- .../health/openscale/gui/MainActivity.java | 38 +++++++++++++----- .../res/drawable-hdpi/ic_preferences_help.png | Bin 0 -> 536 bytes .../ic_preferences_nav_graph.png | Bin 0 -> 514 bytes .../res/drawable-ldpi/ic_preferences_help.png | Bin 0 -> 287 bytes .../ic_preferences_nav_graph.png | Bin 0 -> 278 bytes .../res/drawable-mdpi/ic_preferences_help.png | Bin 0 -> 398 bytes .../ic_preferences_nav_graph.png | Bin 0 -> 354 bytes .../drawable-xhdpi/ic_preferences_help.png | Bin 0 -> 780 bytes .../ic_preferences_nav_graph.png | Bin 0 -> 661 bytes .../drawable-xxhdpi/ic_preferences_help.png | Bin 0 -> 1137 bytes .../ic_preferences_nav_graph.png | Bin 0 -> 1072 bytes .../drawable-xxxhdpi/ic_preferences_help.png | Bin 0 -> 1557 bytes .../ic_preferences_nav_graph.png | Bin 0 -> 1444 bytes .../src/main/res/menu/drawer_bottom_view.xml | 6 +-- .../app/src/main/res/menu/drawer_view.xml | 7 +++- .../app/src/main/res/values-de/strings.xml | 1 + .../app/src/main/res/values/strings.xml | 1 + 17 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 android_app/app/src/main/res/drawable-hdpi/ic_preferences_help.png create mode 100644 android_app/app/src/main/res/drawable-hdpi/ic_preferences_nav_graph.png create mode 100644 android_app/app/src/main/res/drawable-ldpi/ic_preferences_help.png create mode 100644 android_app/app/src/main/res/drawable-ldpi/ic_preferences_nav_graph.png create mode 100644 android_app/app/src/main/res/drawable-mdpi/ic_preferences_help.png create mode 100644 android_app/app/src/main/res/drawable-mdpi/ic_preferences_nav_graph.png create mode 100644 android_app/app/src/main/res/drawable-xhdpi/ic_preferences_help.png create mode 100644 android_app/app/src/main/res/drawable-xhdpi/ic_preferences_nav_graph.png create mode 100644 android_app/app/src/main/res/drawable-xxhdpi/ic_preferences_help.png create mode 100644 android_app/app/src/main/res/drawable-xxhdpi/ic_preferences_nav_graph.png create mode 100644 android_app/app/src/main/res/drawable-xxxhdpi/ic_preferences_help.png create mode 100644 android_app/app/src/main/res/drawable-xxxhdpi/ic_preferences_nav_graph.png diff --git a/android_app/app/src/main/java/com/health/openscale/gui/MainActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/MainActivity.java index 26bd3253..2679cd5c 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/MainActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/MainActivity.java @@ -66,13 +66,13 @@ import java.lang.reflect.Field; import cat.ereza.customactivityoncrash.config.CaocConfig; - public class MainActivity extends AppCompatActivity { private static boolean firstAppStart = true; private static boolean valueOfCountModified = false; private static int bluetoothStatusIcon = R.drawable.ic_bluetooth_disabled; private static MenuItem bluetoothStatus; + private Fragment currentFragment; private DrawerLayout drawerLayout; private Toolbar toolbar; private NavigationView navDrawer; @@ -95,6 +95,8 @@ public class MainActivity extends AppCompatActivity { setContentView(R.layout.activity_main); + currentFragment = null; + // Set a Toolbar to replace the ActionBar. toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); @@ -250,7 +252,6 @@ public class MainActivity extends AppCompatActivity { public void selectDrawerItem(int menuItemId) { // Create a new fragment and specify the fragment to show based on nav item clicked - Fragment fragment = null; Class fragmentClass; String fragmentTitle; @@ -282,22 +283,37 @@ public class MainActivity extends AppCompatActivity { settingsIntent.putExtra(SettingsActivity.EXTRA_TINT_COLOR, navDrawer.getItemTextColor().getDefaultColor()); startActivityForResult(settingsIntent, 1); return; + case R.id.nav_help: + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/oliexdev/openScale/wiki"))); + return; default: fragmentClass = OverviewFragment.class; fragmentTitle = getResources().getString(R.string.title_overview); prefs.edit().putInt("lastFragmentId", menuItemId).commit(); } - try { - fragment = (Fragment) fragmentClass.newInstance(); + FragmentManager fragmentManager = getSupportFragmentManager(); - } catch (Exception e) { - e.printStackTrace(); + // hide previous fragment if it available + if (currentFragment != null) { + fragmentManager.beginTransaction().hide(currentFragment).commit(); } - // Insert the fragment by replacing any existing fragment - FragmentManager fragmentManager = getSupportFragmentManager(); - fragmentManager.beginTransaction().replace(R.id.fragment_content, fragment).commit(); + // try to find selected fragment + currentFragment = fragmentManager.findFragmentByTag(""+menuItemId); + + // if fragment not found then add the fragment + if (currentFragment == null) { + try { + currentFragment = (Fragment) fragmentClass.newInstance(); + } catch (Exception e) { + e.printStackTrace(); + } + + fragmentManager.beginTransaction().add(R.id.fragment_content, currentFragment, "" + menuItemId).commit(); + } else { // otherwise show fragment + fragmentManager.beginTransaction().show(currentFragment).commit(); + } // Set action bar title setTitle(fragmentTitle); @@ -468,10 +484,10 @@ public class MainActivity extends AppCompatActivity { BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i); //noinspection RestrictedApi item.setShiftingMode(false); - item.setPadding(0, 15, 0, 0); + //item.setPadding(0, 15, 0, 0); // set once again checked value, so view will be updated //noinspection RestrictedApi - item.setChecked(item.getItemData().isChecked()); + //item.setChecked(item.getItemData().isChecked()); } } catch (NoSuchFieldException e) { Log.e("BNVHelper", "Unable to get shift mode field", e); diff --git a/android_app/app/src/main/res/drawable-hdpi/ic_preferences_help.png b/android_app/app/src/main/res/drawable-hdpi/ic_preferences_help.png new file mode 100644 index 0000000000000000000000000000000000000000..98b05242c1e31d3b5fc60dc01dbd2276d5501e4e GIT binary patch literal 536 zcmV+z0_XjSP)7b|f+L&LkUFzFsM6%92EbE&l)|WGDZE zvXPH67HU=^8Vy;D~8OIl? zK;}@KV@`M)Kc!2ZjsH^_ZY#Vl6@k?uxSA2{4by8_i*>jjvE3QXNO%sw@gQ%_kjL-= zi%YR3QZI~VG~2@SXahU(7LPLIAGnRFQtZ3b2g@^>hj@=&r1Bce5McotZL#(KG*}LI z@s!jc!xh9bS~!Exp<7eIy@JX1opr)lsTm(*5HC6j7UB*1Y9?4Do$rns+>NQRr_LB$8~|OJ~#!s`eYX9>Z4yqFOEpHKOs%jsrbKx!~Sxa aW&8#J@P+;}<-pef0000O0!x?PFD~xwSpoO=1hgOEg8p*q`2U~Cgry5v~&oz)Y za6{PnYi!3z6Sr$1hhcodNE*zraRsD9ID~nu#_4=QR`OF1F5n|3uv9_54d>#zi9!6y zCzZKq0<+jrwxa|~_!&vR;cHn^Sq0sAiVg9*3Olh5(>NJL3dmQ`#Bba~KaL8QCXfBN zf&+Mi$5p$?S8xeWFoRoIz+Ifh3!$Q3jN&jpRS}m73}7#g;ChTb$8p>dX3RYLun!;p zMV<=u;u;PLElM$mNul3kcqv?_|3Vhm6wV9QB)B6TA=ARS3<@n=7JfwX6fH#q>=MqS zk&8bP+Lz)OE{h~H7|$hK#qL~eQ5Xe<%hV1{e6NUiEr+O`z)JA|zd9-KP|07*qoM6N<$ Ef@HPQPXGV_ literal 0 HcmV?d00001 diff --git a/android_app/app/src/main/res/drawable-ldpi/ic_preferences_help.png b/android_app/app/src/main/res/drawable-ldpi/ic_preferences_help.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2ea70fa2d1f92e8e813c32eedc8478f85ee4e8 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kwj^(N7l!{JxM1({$v}}So-U3d z8WVdjDf&4F3ba04|NdaM<^(R01*fc8bN&z-`n5GgpoEp_C=_axJlE~`ztghVs647})geQ^kCJN+@UHtf@!qXtvU(e4{gBct>|QHXW^h=+ z_Ku_d-S)&AdWCJ4Zi;aaMSkDl*_@t}5WXeaKX3AhxJPy$<(7Fz9E%qEru18Io>0AG z=#SleO5Z($H9p+yU|BC=ZuNbG#zo%kkwU-sJ^wf3hNawsx8EbeA6*IU-@5AHe*1M( ikL;0}o50o-7Y3G@*>`7W-k}{0tl}4%(SG79M$+V> za_+(gzT*jBB3T17XyFIe(U}r;;V@cHrm7Nk9AiJ;`G+kWB+NBTM5|T&ojAf~=@`YI zz&y{!+JD4pniQVL{O`+?r(N58y7Jk-z;Er)r0!jzzkHWawT;5!5b_HdGk4dL=bJPZh3bzt8)8zt8u1dm*pBXn_>k>LB-H22YK3 zPVdAk-eKUMahf2vhlyEChaM2WK@UbTo2XOX zHG^B+#TTjQT*5?9AH;DqWC@!A7b^**F^>)GVG6xyLJnJaLtnz#m(@I0@DiLXVhm?t z$VrkI3yk9u1zh=lpfxODw;K6V-~!tLHwW8ri1V=0p90qr?o$10mqPxCRE5TBaijcs zemST$x-pb2Heeq|0q1a!hk%E15Y8PT3(?)q2N=FJA{5-f0{{R307*qoM6N<$f^74V AZU6uP literal 0 HcmV?d00001 diff --git a/android_app/app/src/main/res/drawable-xhdpi/ic_preferences_help.png b/android_app/app/src/main/res/drawable-xhdpi/ic_preferences_help.png new file mode 100644 index 0000000000000000000000000000000000000000..3f7488ce965f6a7be27ce49f2af3344e3463f537 GIT binary patch literal 780 zcmV+n1M~ceP)Mc{K~z|U#n)Ynl~oi6@ZUM=;H3D1FWF!zsN-uIco9TOiBSq(2&Rq* zLSMjdAb8=0f_P&{fg*i?!0J*VQc9rU6Q!@i`vPJTK#*f7m={ z_WG~2_UyIS+H2R8$0V%7YAnQS=nC22=*I;d#g`bUU^^GD;vgQPQF1)Q;aKRfF%Em$ z9QR{CHem(k$5;__ALHj1{v+%|cU9-TINxIE+i+3_HLS$R7X6c$QP%lV+z!RN=nJD& zQNvd0EHrm-agov-+zN#Y(oQ@p7T{vbB3>Sf_!7ycjuhBdVsa>q3&Vr>p@aNVe7i6)$IgHFB7U!`ONEEx z_}{}?tieAW+b`F%_zZ2Zsq?k1@Zy1h0!soKIyn$&Y z^m>E;C)vTOx`1vep3ORN8na63K3+gw);PRUaRH-cS+icsg8q`aJ@Fl=<7)gdv*H3; zaSZ=f;5U6;sY@3S>0mrBG<}^RD?~S?B2gBja9!$vMpe{n_8S{{vJ@9xCheFZ=YAgo zA80GZq^7fhQ_6QgGo>2xtL#t}p@#3ZT}Gs|coc#UOB#DymV$4U)af(CbqsrzZ%CTh z7NZPu8xm4sIpqbmWH1GngLoNBM!@-U*<0bK@R5rpxMt+r@~c=>R(U$UF>()+uN60~ zPoWDtJ=@dl0d`2;)UYudhg5%@9+Y0txu_D`PS5k^w%#$!=lTDrkM9rYG*%w~0000< KMNUMnLSTZR26Ht4 literal 0 HcmV?d00001 diff --git a/android_app/app/src/main/res/drawable-xhdpi/ic_preferences_nav_graph.png b/android_app/app/src/main/res/drawable-xhdpi/ic_preferences_nav_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0965cae3482ce8ec4d1c36c95f19cd9f2a63cb40 GIT binary patch literal 661 zcmV;G0&4wg8ecw6feV%jv z|L1w%=XuY8R#Y286fhw}z8ofDnBrfCn1Y9B!voZ3EuaZ!k;iE?Wi6l@FQfBz)R65O z*oW`9iH~T2>!{3td;{KKbtIxL1J1u#Aw)b|$abOB_}t+3fra=K9hDO>&}$%vS(qLj zKVW%@eNYADa30U_4qve@=95~$DqO@#)Tb0M505bd{r|=r*QVM{I z=vTzA-fk$DfsHs5osUE}s#1`T!)Lq~qTf@-C)E^8LnpT4Nc6zby^xQ=EgZrYTuSgu zH3bWVR=Hh>ss-1Cc`b(up~t_%CSd_~^&&V?z$8j{`Ny&H@HVduvDt2O}5czu{t&96g9v6_qF}zo$f$yI(EM}lt=;3ip6e{6MY`k5Fx&x0Ah*F_ghI!q|?%An$nXrOQz_tQ8IRtECIN63%~Xu$fR6p$LlHBf_}3HB->rE!eH vj|5w#@LE>RRwL{?c@%PZA>)sP614pR8R~sw`BiMz00000NkvXXu0mjf)P^bj literal 0 HcmV?d00001 diff --git a/android_app/app/src/main/res/drawable-xxhdpi/ic_preferences_help.png b/android_app/app/src/main/res/drawable-xxhdpi/ic_preferences_help.png new file mode 100644 index 0000000000000000000000000000000000000000..7e957ea7d98fab0c1689b1248870f33ea71f31ea GIT binary patch literal 1137 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 yr*cH$y - - + + + \ No newline at end of file diff --git a/android_app/app/src/main/res/values-de/strings.xml b/android_app/app/src/main/res/values-de/strings.xml index d38cd090..252bcf7b 100644 --- a/android_app/app/src/main/res/values-de/strings.xml +++ b/android_app/app/src/main/res/values-de/strings.xml @@ -184,4 +184,5 @@ Um die Änderungen zu übernehmen, ist ein App Neustart erforderlich Teilen Suche beendet nach Bluetooth Waagen + Hilfe \ No newline at end of file diff --git a/android_app/app/src/main/res/values/strings.xml b/android_app/app/src/main/res/values/strings.xml index 87916a95..3fa94ee5 100644 --- a/android_app/app/src/main/res/values/strings.xml +++ b/android_app/app/src/main/res/values/strings.xml @@ -189,6 +189,7 @@ Regression weight line Regression polynom degree Goal line + Help Enjoying openScale? How about a rating on GooglePlay or on GitHub, then?