bottom navigation sets locale on startup and language change. Fixed a bug where the selected fragment changes when rotated.
This commit is contained in:
@@ -30,8 +30,9 @@ import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
public class MainActivity extends AppCompatActivity implements Refreshable{
|
||||
private static final String TAG = MainActivity.class.getName();
|
||||
private BottomNavigationView bottomNav;
|
||||
|
||||
/**
|
||||
* onCreate method that creates the main activity
|
||||
@@ -40,12 +41,12 @@ public class MainActivity extends AppCompatActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setLocale(loadLocale());
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
BottomNavigationView bottomNav = findViewById(R.id.navbar);
|
||||
bottomNav = findViewById(R.id.navbar);
|
||||
bottomNav.setOnNavigationItemSelectedListener(navListener);
|
||||
|
||||
|
||||
/*System.out.println(Arrays.toString(getFilesDir().listFiles()));
|
||||
FileIO<Route> fileIO = new FileIO<>();
|
||||
fileIO.writeFileData(new Route("TERSTSET"), getApplicationContext());
|
||||
@@ -59,9 +60,9 @@ public class MainActivity extends AppCompatActivity {
|
||||
RouteListManager.INSTANCE.load();
|
||||
|
||||
// initialize saved language from sharedPreferences
|
||||
setLocale(loadLocale());
|
||||
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, new HomeFragment()).commit();
|
||||
if (savedInstanceState == null) {
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, new HomeFragment()).commit();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -107,4 +108,14 @@ public class MainActivity extends AppCompatActivity {
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, selectedFragment).commit();
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* refreshes bottom navigation
|
||||
*/
|
||||
@Override
|
||||
public void refresh() {
|
||||
bottomNav.getMenu().clear();
|
||||
bottomNav.inflateMenu(R.menu.navmenu);
|
||||
bottomNav.setSelectedItemId(R.id.settings);
|
||||
}
|
||||
}
|
||||
5
app/src/main/java/com/a1/nextlocation/Refreshable.java
Normal file
5
app/src/main/java/com/a1/nextlocation/Refreshable.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package com.a1.nextlocation;
|
||||
|
||||
public interface Refreshable {
|
||||
void refresh();
|
||||
}
|
||||
@@ -19,13 +19,23 @@ import android.widget.Spinner;
|
||||
|
||||
import com.a1.nextlocation.MainActivity;
|
||||
import com.a1.nextlocation.R;
|
||||
import com.a1.nextlocation.Refreshable;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class SettingsFragment extends Fragment {
|
||||
|
||||
private SharedPreferences.Editor editor;
|
||||
|
||||
private Refreshable refreshable;
|
||||
|
||||
@Override
|
||||
public void onAttach(@NotNull Context context) {
|
||||
super.onAttach(context);
|
||||
refreshable = (Refreshable) context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -57,15 +67,11 @@ public class SettingsFragment extends Fragment {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
setLocale(dropdownPositionToLanguage(id));
|
||||
// refresh fragment on language change
|
||||
if (id != previousID) {
|
||||
Fragment currentFragment = getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_layout);
|
||||
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
|
||||
fragmentTransaction.detach(currentFragment);
|
||||
fragmentTransaction.attach(currentFragment);
|
||||
fragmentTransaction.commit();
|
||||
refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
}
|
||||
@@ -115,6 +121,8 @@ public class SettingsFragment extends Fragment {
|
||||
fragmentTransaction.detach(currentFragment);
|
||||
fragmentTransaction.attach(currentFragment);
|
||||
fragmentTransaction.commit();
|
||||
|
||||
refreshable.refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user