2012-05-15 68 views
2

我創建了一個包含兩個按鈕的收音機組,我可以選擇一個並保存它,它工作正常,在關閉應用程序後仍然存儲。我想要做的是使用另一個類中單選按鈕的值。這裏是一個包含共享偏好代碼我設置類:如何從另一個類訪問共享首選項布爾值

public class Settings extends Activity { 
private String settingsTAG = "AppNameSettings"; 
private SharedPreferences prefs; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.settings); 
    prefs = getSharedPreferences(settingsTAG, 0); 

    final RadioButton rb0 = (RadioButton) findViewById(R.id.radioInternetYes); 
    final RadioButton rb1 = (RadioButton) findViewById(R.id.radioInternetNo); 

    rb0.setChecked(prefs.getBoolean("rb0", true)); 
    rb1.setChecked(prefs.getBoolean("rb1", false));  
    Button btnSave = (Button) findViewById(R.id.btnSave); 

    btnSave.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      prefs = getSharedPreferences(settingsTAG, 0); 
      Editor editor = prefs.edit(); 

      editor.putBoolean("rb0", rb0.isChecked()); 
      editor.putBoolean("rb1", rb1.isChecked()); 
      editor.commit(); 

      finish(); 

     } 
    }); 

} 

在另一類我想檢查是否點擊一個按鈕,當RB0是真還是假:

share.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v) { 
      if(rb0 = true){ 
      Intent i = new Intent(Intent.ACTION_SEND); 

      i.setType("text/plain"); 

      i.putExtra(Intent.EXTRA_EMAIL , new String[]{""}); 

      i.putExtra(Intent.EXTRA_SUBJECT, "Check out my awesome score!"); 
      i.putExtra(Intent.EXTRA_TEXT , "I am playing this awesome game called Tap the Button, and I just scored the incredible highscore of " +s+ " Taps!!\n\nCan you beat it!?"); 
      try { 
       startActivity(Intent.createChooser(i, "Send mail...")); 
      } catch (android.content.ActivityNotFoundException ex) { 
       Toast.makeText(FailScreen.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
      } 
     } 
      else{ 
       //Display warning that rb0 is false 
      } 
       } 
    }); 

我已經研究#1和開發人員的文檔,但我似乎無法找到如何做到這一點,任何意見表示讚賞。

謝謝

回答

7

代替if(rb0 = true)(這應該是==反正),你需要再次訪問該SharedPreferences。從http://developer.android.com/guide/topics/data/data-storage.html引述:

要讀取的值,使用SharedPreferences方法如getBoolean()和 的getString()。

所以,你會使用類似:

String settingsTAG = "AppNameSettings"; 
SharedPreferences prefs = getSharedPreferences(settingsTAG, 0); 
boolean rb0 = prefs.getBoolean("rb0", false); 
if(rb0 == true){ 
    // Do something 
} 
+0

謝謝您的回答!一個我不明白的是如何使用這個類的設置,我是否需要創建一個這樣的實例,以便我可以從其他類訪問它?使用你的代碼我得到一個錯誤,因爲它不知道什麼設置,我只是不知道如何訪問這個類的設置。 謝謝! – deucalion0

+1

對不起,我忘了在示例代碼中聲明SharedPreferences。是的,你需要在這個類中創建它的一個實例。我編輯了這個響應來創建一個類似於你的發佈代碼的實例。 – Jon

+0

這完美的作品!謝謝! :) 我正在嘗試各種瘋狂的東西,它會花我一段時間來找出這些代碼行!你救了我很多麻煩謝謝! :) – deucalion0

2

您還可以使用:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
sharedPreferences.getBoolean("myKey", false)