GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[Resolvido] Locale travando celular


#1

Boa tarde a todos.
Segue o código e abaixo explico o que está acontecendo.

Se executo o método acima, clicando em um botão na classe MainActivity.java funciona perfeitamente, mas se inicio o método no onCreate, junto com a classe esse método entre em loop infinito, chega quase que travar o celular. Abaixo sege a classe completa.

public class MainActivity extends AppCompatActivity {

Button btSalvar;
TextView tvSharedPref;
Locale myLocale;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //setLocale("fr");

    tvSharedPref = (TextView) findViewById(R.id.tv_shared_pref);

    btSalvar = (Button) findViewById(R.id.bt_salvar);
    btSalvar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            setLocale("fr");

        }
    });

}

@Override
protected void onStart(){
    super.onStart();
    //setLocale("fr");
}

@SuppressWarnings("deprecation")
public void setLocale(String lang) {

    myLocale = new Locale(lang);
    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    conf.locale = myLocale;
    res.updateConfiguration(conf, dm);
    Intent refresh = new Intent(this, MainActivity.class);
    startActivity(refresh);
}

}


#2

Consegui, bastou apenas passar o setLocale(“fr”) antes do setContentView(R.layout.activity_main);