У меня есть два языка в Android Studio, я сделал с изменением языков. Но проблема в том, что когда я поворачиваю приложение, автоматически меняю язык по умолчанию. Как я мог преодолеть это, в моей программе я использовал представление переработчика в качестве языкового меню, а затем щелкните на представлении реселлера. Я вызвал локальный интерфейс прослушивателя и переопределил заданный локальный метод в основном упражнении.
В моей основной деятельности у меня есть метод переопределения setlocal()
, который отлично работает, но при вращении он переходит на английский. гениальные люди, дайте мне код для них.
public class LanguageActivity extends AppCompatActivity implements LocaleListener {
private List<Languages>languagesList=new ArrayList<>();
private RecyclerView recyclerView;
private LanguageAdapter languageAdapter;
private String langword="ar";
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
setLocale(langword);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
setLocale(langword);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_language);
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 3);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
languageAdapter = new LanguageAdapter(languagesList);
recyclerView.setLayoutManager(mLayoutManager);
languageAdapter.setLocaleListener(this);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(languageAdapter);
prepareLanguageData();
}
private void prepareLanguageData() {
Languages languages = new Languages("English");
languagesList.add(languages);
languages = new Languages("العَرَبِيَّة");
languagesList.add(languages);
@Override
public void setLocale(String lang) {
langword= lang;
Locale[] locales = Locale.getAvailableLocales();
boolean is_supported=false;
for (int i = 0; i < locales.length; i++) {
if(lang.equals(locales[i].toString()))
{
is_supported=true;
break;
}
Log.e( "Languages",i+" :"+ locales[i]);
}
if(is_supported) {
Locale myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
conf.setLocale(myLocale);
} else {
conf.locale = myLocale;
}
res.updateConfiguration(conf, dm);
}
}
}