Bitte ändern helfen,Wie die Sprache mit einem Knopf im Android Studio
Ich habe zwei zusätzlich Sprachressource erstellt und mag dem Spiel die Möglichkeit geben, die Sprachoption mit einer Taste Auswahl zu ändern.
Ich habe eine Klasse namens LocaleHelper erstellt, die ich über Google gefunden habe, wie unten, aber das Gebietsschema wurde seither entzogen. Wie geht es jetzt?
LocaleHelper.onCreate(this, "en");
Fehler wie folgt:: aber meine APP Werke denkt nicht diese optimal ist
package biz.myecard.mathisfun;
/**
* Created by Hans Fouche on 2016/10/18.
*/
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import java.util.Locale;
public class LocaleHelper {
private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language";
public static void onCreate(Context context) {
String lang = getPersistedData(context, Locale.getDefault().getLanguage());
setLocale(context, lang);
}
public static void onCreate(Context context, String defaultLanguage) {
String lang = getPersistedData(context, defaultLanguage);
setLocale(context, lang);
}
public static String getLanguage(Context context) {
return getPersistedData(context, Locale.getDefault().getLanguage());
}
public static void setLocale(Context context, String language) {
persist(context, language);
updateResources(context, language);
}
private static String getPersistedData(Context context, String defaultLanguage) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(SELECTED_LANGUAGE, defaultLanguage);
}
private static void persist(Context context, String language) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(SELECTED_LANGUAGE, language);
editor.apply();
}
private static void updateResources(Context context, String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);
Resources resources = context.getResources();
Configuration configuration = resources.getConfiguration();
configuration.locale = locale;
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
}
}
Es wird die in die Schaltfläche Methode mit aufgerufen.
Hinweis: /Users/macintoshhd/Desktop/AndroidCourse/MathisFun/app/src/main/java/biz/meinecard/mathisfun/LocaleHelper.java verwendet oder überschreibt eine veraltete API. Hinweis: Erneutes Kompilieren mit -Xlint: Veraltet für Details.
Das ist nicht ein Fehler ist, nur eine deprecation Warnung –
Danke, aber Weißt du, was der neue und korrekte (optimale) Weg ist? –
Es ist nicht klar, welche Methode Ihnen diese Warnung gibt. –