Open Stathis001 opened 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();
}
}
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();
}
}
Το κουμπί όταν πατηθεί εμφανίζει της διαθέσιμες επιλογές . Όταν ο χρήστης επιλέξει μια γλώσσα το σύστημα επιβεβαιώνει ότι η τάδε γλώσσα επιλέχτηκε αλλά δεν υπάχει τρόπος να συνεχίσει κανείς με την χρήση της εφαρμογής γιατί δεν αλλάζει ποτέ το layout παραμένει στις διαθέσιμες επιλογές χωρίς να πάει πίσω ή μπροστά και χωρίς να κάνει restart την εφαρμογή με τα νέα strings όπως θα περίμενα (σύμφωνα με τον κώδικα).