Что мне нужно: Я хочу дать возможность изменить язык в своем приложении, чтобы изменить язык только моего приложения, а не для всего языка телефона.
Что я сделал: Я пытался изменить языковой стандарт во время выполнения, и он меняет язык.
В чем проблема: Что я хочу, я не хочу воссоздаватьАктивность или фрагмент при изменении языка.
То, что я пробовал, выглядит следующим образом.
TestActivity.java
public class TestActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_dashboard, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
String selectedLang = null;
int id = item.getItemId();
if (id == R.id.menu_lang_english) {
selectedLang = "en";
Toast.makeText(this, "English selected!", Toast.LENGTH_SHORT).show();
} else if (id == R.id.menu_lang_kannada) {
selectedLang = "fr";
Toast.makeText(this, "French selected!", Toast.LENGTH_SHORT).show();
}
changeLang(this, selectedLang);
return super.onOptionsItemSelected(item);
}
private void changeLang(Context context, String selectedLang) {
Locale myLocale = new Locale(selectedLang);
Locale.setDefault(myLocale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = myLocale;
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
recreate();
}
}
activity_test.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".mvp.view.activity.TestActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/test"
android:textSize="20sp" />
</LinearLayout>
Спросите меня, если что-нибудь требуется.Заранее спасибо.