0 Daumen
38 Aufrufe

Frage:Hallo, ich habe auf Android Studio mit der Sprache Java ein App programmiert. Auf dem ersten Activity hat die App einen Spinner womit man zwei Sprachen auswählen kann. Mein Problem ist es, dass wenn ich auf die Sprache Englisch wechsele ändert sich die Sprache auf dem ersten Activity nicht aber auf dem nächsten Activtiy problemlos. Ich habe es danach mit einem restart versucht, aber weiß leider nicht wie und wo ich es einsetzen soll.Wenn ich es in die if Abfrage einsetzte wiederholt der restart sich die ganze Zeit und die App stürzt ab.

Wie ist es möglich , dass die App nach dem Sprachenauswahl nur einmal neu startet (restart oder recreat) damit die Sprache auf dem ersten Activity sich ändert?



Code:

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

  Configuration B;
  Button button;
  Boolean touched = true;


  private void restartActivity() {
      Intent intent = getIntent();
      finish();
      startActivity(intent);}


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

      //Button zur Main 2
      button = (Button) findViewById(R.id.button3);
      button.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              Intent intent = new Intent(MainActivity.this, MainActivity2.class);
              startActivity(intent);
          }
      });


      Spinner spinner = (Spinner) findViewById(R.id.spLanguage);

      ArrayAdapter<CharSequence> adapter = ArrayAdapter .createFromResource(this, R.array.languages,android.R.layout.simple_spinner_item);
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      spinner.setAdapter(adapter);
      spinner.setOnItemSelectedListener(this);





  }






  @Override
  public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
      String lang= parent.getItemAtPosition(position).toString();
      String languageToLoad = null;


          if (lang.equals("Deutsch")) {
              languageToLoad = "De";

          } else if (lang.equals("English")) {
              languageToLoad = "En";
          }

          if (languageToLoad != null) {
              Locale locale = new Locale(languageToLoad);
              Locale.setDefault(locale);
              Configuration config = new Configuration();
              config.locale = locale;
              getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
          }



          }






  @Override
  public void onNothingSelected(AdapterView<?> parent) {

  }
  }

von

1 Antwort

0 Daumen
von 2,4 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community