У меня есть приложение, в котором есть несколько языков, использующих локальМоя проблема в том, что я могу сделать локаль с помощью кнопки в действии, однако я не могу добавить эту опцию в нижнюю навигационную панель.Вот мои коды ниже, спасибо за любую помощь!
открытый класс MainActivity расширяет AppCompatActivity реализует NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomnavview);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.call:
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:00902425262828"));
startActivity(intent);
break;
case R.id.change_my_langg:
MenuView.ItemView.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
showChangeLanguageDialog();
return false;
}
private void showChangeLanguageDialog(){
final String[] listItems = {"Turkish, English, Russian"};
final AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
mBuilder.setTitle("Select Language");
mBuilder.setSingleChoiceItems(listItems, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
if (i == 0){
setLocale("TR");
recreate();
}
else if (i == 1){
setLocale("ENG");
recreate();
}
else if (i == 2){
setLocale("RU");
recreate();
}
AlertDialog mDialog = mBuilder.create();
mDialog.show();
}
private void setLocale(String lang) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration configuration = new Configuration();
configuration.locale = locale;
getBaseContext().getResources().updateConfiguration(configuration, getBaseContext().getResources().getDisplayMetrics());
SharedPreferences.Editor editor = getSharedPreferences("Settings", MODE_PRIVATE).edit();
editor.putString("change_my_langg", lang);
editor.apply();
}
public void loadLocale(){
SharedPreferences prefs = getSharedPreferences("Settings",Activity.MODE_PRIVATE);
String language = prefs.getString("change_my_langg","");
setLocale(language);
}
});
}
});
break;
case R.id.share:
Intent intent3 = new Intent(Intent.ACTION_SEND);
intent3.setType("text/plain");
String shareBody = "https://www.utopiaworld.com.tr/";
String shareSubject = "Utopia World Hotel";
intent3.putExtra(Intent.EXTRA_TEXT,shareBody);
intent3.putExtra(Intent.EXTRA_SUBJECT,shareSubject);
startActivity(Intent.createChooser(intent3,"Share Utopia World Hotel"));
break;
}
return false;
}
});
drawer = findViewById(R.id.drawer_layout_home);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new HomeFragment()).commit();
navigationView.setCheckedItem(R.id.nav_home);
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_home:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new HomeFragment()).commit();
break;
case R.id.nav_directions: {
Intent intent = new Intent(MainActivity.this, DirectionsFragment.class);
startActivity(intent);
break; }
case R.id.nav_restaurant: {
Intent intent = new Intent(MainActivity.this, RestaurantFragment.class);
startActivity(intent); }
break;
case R.id.nav_webpage:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new WebpageFragment()).commit();
break;
case R.id.nav_exit:
System.exit(0);
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
}