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.Arrays;
|
||||||
import java.util.Locale;
|
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 static final String TAG = MainActivity.class.getName();
|
||||||
|
private BottomNavigationView bottomNav;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* onCreate method that creates the main activity
|
* onCreate method that creates the main activity
|
||||||
@@ -40,12 +41,12 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
setLocale(loadLocale());
|
||||||
setContentView(R.layout.activity_main);
|
setContentView(R.layout.activity_main);
|
||||||
|
bottomNav = findViewById(R.id.navbar);
|
||||||
BottomNavigationView bottomNav = findViewById(R.id.navbar);
|
|
||||||
bottomNav.setOnNavigationItemSelectedListener(navListener);
|
bottomNav.setOnNavigationItemSelectedListener(navListener);
|
||||||
|
|
||||||
|
|
||||||
/*System.out.println(Arrays.toString(getFilesDir().listFiles()));
|
/*System.out.println(Arrays.toString(getFilesDir().listFiles()));
|
||||||
FileIO<Route> fileIO = new FileIO<>();
|
FileIO<Route> fileIO = new FileIO<>();
|
||||||
fileIO.writeFileData(new Route("TERSTSET"), getApplicationContext());
|
fileIO.writeFileData(new Route("TERSTSET"), getApplicationContext());
|
||||||
@@ -59,9 +60,9 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
RouteListManager.INSTANCE.load();
|
RouteListManager.INSTANCE.load();
|
||||||
|
|
||||||
// initialize saved language from sharedPreferences
|
// initialize saved language from sharedPreferences
|
||||||
setLocale(loadLocale());
|
if (savedInstanceState == null) {
|
||||||
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, new HomeFragment()).commit();
|
||||||
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();
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, selectedFragment).commit();
|
||||||
return true;
|
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.MainActivity;
|
||||||
import com.a1.nextlocation.R;
|
import com.a1.nextlocation.R;
|
||||||
|
import com.a1.nextlocation.Refreshable;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
public class SettingsFragment extends Fragment {
|
public class SettingsFragment extends Fragment {
|
||||||
|
|
||||||
private SharedPreferences.Editor editor;
|
private SharedPreferences.Editor editor;
|
||||||
|
private Refreshable refreshable;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(@NotNull Context context) {
|
||||||
|
super.onAttach(context);
|
||||||
|
refreshable = (Refreshable) context;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -57,15 +67,11 @@ public class SettingsFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||||
setLocale(dropdownPositionToLanguage(id));
|
setLocale(dropdownPositionToLanguage(id));
|
||||||
|
// refresh fragment on language change
|
||||||
if (id != previousID) {
|
if (id != previousID) {
|
||||||
Fragment currentFragment = getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_layout);
|
refresh();
|
||||||
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
|
|
||||||
fragmentTransaction.detach(currentFragment);
|
|
||||||
fragmentTransaction.attach(currentFragment);
|
|
||||||
fragmentTransaction.commit();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNothingSelected(AdapterView<?> parent) {
|
public void onNothingSelected(AdapterView<?> parent) {
|
||||||
}
|
}
|
||||||
@@ -115,6 +121,8 @@ public class SettingsFragment extends Fragment {
|
|||||||
fragmentTransaction.detach(currentFragment);
|
fragmentTransaction.detach(currentFragment);
|
||||||
fragmentTransaction.attach(currentFragment);
|
fragmentTransaction.attach(currentFragment);
|
||||||
fragmentTransaction.commit();
|
fragmentTransaction.commit();
|
||||||
|
|
||||||
|
refreshable.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user