у нас нет статических методов в Котлине?!
в этом была проблема, она была в самом файле адаптера, а не в MainActivity.
поэтому, когда я пытался позвонить в класс, это дало мне вышеуказанную ошибку.
Я нашел этот урок очень полезным.
https://android.jlelse.eu/daily-kotlin-static-methods-9330552cde8a
хотя я сделал файл адаптера в Java более прямым в разработке.
вот код адаптера:
package com.xr.mapbased.helper;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import java.util.*;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.os.Build;
import com.google.android.gms.stats.WakeLock;
import java.util.Locale;
public class LocaleJ {
private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language";
public static Context onAttach(Context context){
String lang = getPersistedData(context, Locale.getDefault().getLanguage());
return setLocale(context,lang);
}
public static Context onAttach(Context context,String defaultLanguage){
String lang = getPersistedData(context,defaultLanguage);
return setLocale(context,lang);
}
private static String getPersistedData(Context context, String lang) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(SELECTED_LANGUAGE,lang);
}
private static void persist(Context context, String language) {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = pref.edit();
editor.putString(SELECTED_LANGUAGE, language);
editor.apply();
}
public static Context setLocale(Context context, String lang) {
persist(context,lang);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
return updateResources(context,lang);
return updateResourcesLegacy(context,lang);
}
@TargetApi(Build.VERSION_CODES.N)
private static Context updateResources(Context context, String lang) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = context.getResources().getConfiguration();
config.setLocale(locale);
config.setLayoutDirection(locale);
return context.createConfigurationContext(config);
}
@SuppressWarnings("deprecation")
private static Context updateResourcesLegacy(Context context, String lang) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Resources resources = context.getResources();
Configuration config = resources.getConfiguration();
config.locale = locale;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
config.setLayoutDirection(locale);
resources.updateConfiguration(config,resources.getDisplayMetrics());
return context;
}
}