2011-10-22 12 views
0

私のアプリでは、アプリを起動するたびにデフォルトの画面を選択できます。私はSharedPreferencesを使ってそれを行います。インストール後最初に起動したときに画面を選択するように指示され、その部分が機能します。しかし、ユーザーがデフォルトの画面を変更できるようにするアプリ内では、私は同じコードを使用し、変更を保存することはありません。正しく保存するためには何を変更する必要がありますか?ユーザーがデフォルト画面を変更できるようにする

  AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Choose a Default Screen"); 
     builder.setItems(R.array.openChoices, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 
       SharedPreferences settings = getPreferences(0); 
       SharedPreferences.Editor editor = settings.edit(); 
       editor.putInt("start", item); 
       editor.commit(); 
       //Mech = 0, E&M = 1 
       int choice = getPreferences(0).getInt("start", 3); 
       if(choice == 0){ 
        Toast.makeText(setscreen.this, "Mechanics is now the default screen", Toast.LENGTH_SHORT).show(); 
        Intent myIntent = new Intent(setscreen.this, physics.class); 
        startActivity(myIntent);    
       } 
       else if(choice == 1){ 
        Toast.makeText(setscreen.this, "E&M is now the default screen", Toast.LENGTH_SHORT).show(); 
        Intent myIntent = new Intent(setscreen.this, physicsem.class); 
        startActivity(myIntent); 
       } 
      } 
     }); 
+0

editor.apply()を呼び出してみましたか? – Jack

+0

editor.commit()は同じことをしてはいけませんか? – tedbrooks2

+0

ええ、ドキュメントは、彼らは同じことを言う、私はちょうど価値があると言っていた:)。 – Jack

答えて

0

共有設定オブジェクトへの参照を取得するには、このようなものを使用してみてください:私はあなたがやった方法は、それが動作しないことを確かに知っていない

myPrefs = PreferenceManager.getDefaultSharedPreferences(ScreenSaverActivity.this); 

が、私はそれが0を過ぎたようには見えませんでした。

+0

申し訳ありませんが、私はこのショットを与え、それがどのように動作するかを見ていきます。ありがとう – tedbrooks2

0

そして毎回editor.commit();と呼んでいますか?

関連する問題