leithdm
5/5/2020 - 7:47 AM

SharedPreferences and OptionsMenu: choosing a language

SharedPreferences sharedPreferences;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.main_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        super.onOptionsItemSelected(item);

        switch (item.getItemId()) {
            case R.id.english:
                setLanguage("English");
                return true;

            case R.id.german:
                setLanguage("German");
                return true;

            default:
                return false;
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sharedPreferences = this.getSharedPreferences("package com.darrenmleith.alertdemo", Context.MODE_PRIVATE);
        String language = sharedPreferences.getString("language", "");
        Log.i("saved language", language);

        if (language.equals("")) {
            new AlertDialog.Builder(this)
                    .setIcon(android.R.drawable.ic_btn_speak_now)
                    .setTitle("Choose a Language")
                    .setMessage("Please choose preferred language")
                    .setPositiveButton("English", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            setLanguage("English");
                        }
                    })
                    .setNegativeButton("German", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            setLanguage("German");
                        }
                    })
                    .show();
        }
    }

    public void setLanguage(String language) {
        sharedPreferences.edit().putString("language", language).apply();
        Toast.makeText(getApplicationContext(), "Language set to " + language, Toast.LENGTH_SHORT).show();
    }