добавление многоязычной кнопки локали в виде диалогового окна в нижнее представление навигации - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть приложение, в котором есть несколько языков, использующих локальМоя проблема в том, что я могу сделать локаль с помощью кнопки в действии, однако я не могу добавить эту опцию в нижнюю навигационную панель.Вот мои коды ниже, спасибо за любую помощь!

открытый класс 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();
    }
}

}

...