Stathis001 / Tourist_Guide

0 stars 0 forks source link

Να γίνει το κουμπί των γλωσσών λειτουργικό #42

Open Stathis001 opened 7 months ago

Stathis001 commented 7 months ago

Το κουμπί όταν πατηθεί εμφανίζει της διαθέσιμες επιλογές . Όταν ο χρήστης επιλέξει μια γλώσσα το σύστημα επιβεβαιώνει ότι η τάδε γλώσσα επιλέχτηκε αλλά δεν υπάχει τρόπος να συνεχίσει κανείς με την χρήση της εφαρμογής γιατί δεν αλλάζει ποτέ το layout παραμένει στις διαθέσιμες επιλογές χωρίς να πάει πίσω ή μπροστά και χωρίς να κάνει restart την εφαρμογή με τα νέα strings όπως θα περίμενα (σύμφωνα με τον κώδικα).

Argiris2000 commented 7 months ago

public class MainActivity extends AppCompatActivity {

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

    Button languageButton = findViewById(R.id.languageButton);
    languageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Καλέστε τη μέθοδο για την αλλαγή της γλώσσας
            changeLanguage("en"); // Εδώ χρησιμοποιείται η κωδική ονομασία για τα Αγγλικά ("en")
        }
    });
}

// Μέθοδος για την αλλαγή της γλώσσας
private void changeLanguage(String languageCode) {
    Locale locale = new Locale(languageCode);
    Locale.setDefault(locale);

    Configuration configuration = new Configuration();
    configuration.setLocale(locale);

    getResources().updateConfiguration(configuration, getBaseContext().getResources().getDisplayMetrics());

    // Εδώ μπορείτε να ξανα-φορτώσετε τη δραστηριότητά σας για να εφαρμοστεί η αλλαγή
    recreate();
}

}

Stathis001 commented 6 months ago

public class MainActivity extends FragmentActivity implements View.OnClickListener {

Button startButton, languageButton;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start_screen);
    languageButton = findViewById(R.id.languageButton);
    languageButton.setOnClickListener(this::showLanguageDialog);
    startButton = findViewById(R.id.startButton);
    startButton.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    Intent intent = new Intent(v.getContext(), MapsActivity.class);
    startActivity(intent);
}

private void showLanguageDialog(View v) {
    List<String> supportedLanguages = Arrays.asList(getString(R.string.english), getString(R.string.greek), getString(R.string.german));

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Select Language")
            .setItems(supportedLanguages.toArray(new String[0]), (dialog, which) -> {
                String selectedLanguage = supportedLanguages.get(which);
                changeLanguage(selectedLanguage);
                recreate(); // Restart the activity to apply the language change
            });
    AlertDialog dialog = builder.create();
    dialog.show();
}
private void changeLanguage(String language) {
    Locale newLocale;
    if (language.equalsIgnoreCase("german")) {
        newLocale = Locale.GERMAN;
    } else if (language.equalsIgnoreCase("greek")) {
        newLocale = new Locale("el");
    } else {
        newLocale = Locale.ENGLISH;
    }

    // Update the configuration
    Resources resources = getResources();
    Configuration configuration = resources.getConfiguration();
    configuration.setLocale(newLocale);
    resources.updateConfiguration(configuration, resources.getDisplayMetrics());

    // You may also want to save the selected language for future use
    // e.g., using SharedPreferences
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    preferences.edit().putString("selected_language", language).apply();
}

}