2012-04-30 16 views
0

私はこのコードを使ってハングマンアプリケーションを作成しましたが、最初に3つのボタン(nyttSpillKnapp、omSpilletKnapp、avsluttKnapp)を押しても何も起こりませんでした 私がOptionMenuで言語を選んでいないと、私はゲームをプレイすることができます。ボタンを1つだけ押すことができます

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

私の悪いOFC、ちょうどテスト。それは失敗したときに文字列を持っていた –

+0

(再)設定言語の機能でボタンを設定せずにコンテンツビュー(新しいボタンの作成)を設定する。 – Deucalion

答えて

0

私はロケールを設定しようとしたときsettSpraak(...)メソッドは黙って失敗している推測しています。あなたはlogcatをチェックしましたか?

正しいロケール文字列がないと思います。たとえば、英国はen_GBです。英国とノルウェーについてそれぞれ次のように試してください。

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

大文字と小文字の区別は、言語と国の区別に注意してください。