2012-04-30 2 views
0

Я использую этот код, чтобы сделать приложение палача, но если я выбрал язык, сначала ничего не произойдет, если я нажму три кнопки (nyttSpillKnapp, omSpilletKnapp, avsluttKnapp) Не знаю почему. Если я не выбрал язык в OptionMenu, я могу играть в игру.Может только нажать одну кнопку

public class HangmanActivity extends Activity implements OnClickListener { 
private static final String TAG = "Hangman"; 
SharedPreferences spraak; 
String valgtSpraak = "uk"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    settSpraak("uk"); 
    setContentView(R.layout.main); 
    Button nyttSpillKnapp = (Button) this.findViewById(R.id.nyttSpill); 
    nyttSpillKnapp.setOnClickListener(this); 

    Button omSpilletKnapp = (Button) this.findViewById(R.id.omSpillet); 
    omSpilletKnapp.setOnClickListener(this); 
    Button avsluttKnapp = (Button) this.findViewById(R.id.avslutt); 
    avsluttKnapp.setOnClickListener(this); 
} 
public void settSpraak(String spraak) { 
    valgtSpraak = spraak; 
    Locale locale = new Locale(valgtSpraak); 
    Locale.setDefault(locale); 
    Configuration config = new Configuration(); 
    config.locale = locale; 
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
    this.setContentView(R.layout.main); 
} 

public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.nyttSpill: 
     SavePreferences("", valgtSpraak); 
     startActivity(new Intent(this, test.class)); 
     break; 
    case R.id.omSpillet: 
     //SavePreferences("", valgtSpraak); 
     startActivity(new Intent(this, omSpillet.class)); 
     break; 
    case R.id.avslutt: 
     finish(); 
     break; 
     default: 
    } 
} 
public boolean onCreateOptionsMenu(Menu meny) { 
    super.onCreateOptionsMenu(meny); 
    meny.add(R.string.norsk); 
    meny.add(R.string.engelsk); 
    return true; 
} 
public boolean onOptionsItemSelected(MenuItem item){ 
    SavePreferences("", valgtSpraak); 
    if (item.getTitle().equals(getResources().getString(R.string.norsk))){ 
     settSpraak("no"); 
    } 
    if(item.getTitle().equals(getResources().getString(R.string.engelsk))){ 
     settSpraak("uk"); 
    } 
    return true; 
} 
private void SavePreferences(String key, String value) { 
    SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
    SharedPreferences.Editor prefsEditor; 
    prefsEditor = myPrefs.edit(); 
    prefsEditor.putString(key, value); 
    prefsEditor.commit(); 
} 

}

+0

** SavePreferences ("", valgtSpraak); ** - Почему вы пытаетесь сохранить настройки с пустой строкой '' '' в качестве ключа? – Squonk

+0

Мой плохой, просто тестирование. он сделал из строки c, когда она не удалась –

+0

(re) настройка просмотра содержимого (создание новых кнопок) без настройки кнопок нажмите кнопку прослушивания в функции языка перевода. – Deucalion

ответ

0

Я предполагаю, что метод settSpraak (...) молча сбиваться при попытке установить языковой стандарт. Вы проверили logcat?

Я не думаю, что у вас правильные языковые строки, например, UK должен быть en_GB. Попробуйте следующее для Великобритании и Норвегии, соответственно ...

Locale locale = new Locale("en", "GB"); 
Locale locale = new Locale("no", "NO"); 

Note case-sensitive для языка и страны.

Смежные вопросы