Изменение языка выполнения приложения без воссоздания активности - PullRequest
0 голосов
/ 25 июня 2018

Что мне нужно: Я хочу дать возможность изменить язык в своем приложении, чтобы изменить язык только моего приложения, а не для всего языка телефона.

Что я сделал: Я пытался изменить языковой стандарт во время выполнения, и он меняет язык.

В чем проблема: Что я хочу, я не хочу воссоздаватьАктивность или фрагмент при изменении языка.

То, что я пробовал, выглядит следующим образом.

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>

Спросите меня, если что-нибудь требуется.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...