1

私はクイズアプリを作成しています。いくつかの質問をして、ラジオボタンの形でオプションを提供します。今、答えの値(正しい答えにプラス、間違った答えにマイナス)を保存し、SharedPreferencesその結果を他のアクティビティに表示したいと思います. 私はここでこの答えを検索して見つけました

私はそれを使用しましたが、それでも目的の結果を得ることができません 私のコードは次のようになります:

値を保存するメイン アクティビティSharedPreferences:

public class MainActivity extends Activity {
private SharedPreferences saveScore;
private SharedPreferences.Editor editor;
RadioGroup group;
RadioButton radioButton;    
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     
    group = (RadioGroup) findViewById(R.id.radioGroup1);
    radioButton = (RadioButton) group.findViewById(group.getCheckedRadioButtonId());
    saveScore = getPreferences(MODE_PRIVATE);       
}
public void gotoNextAndSaveScore(View view) {
    if(group.getCheckedRadioButtonId() != R.id.radio3){
        editor = saveScore.edit();
        editor.putInt("score", -1);
        editor.commit();
    }else{
        editor = saveScore.edit();
        editor.putInt("score", 1);
        editor.commit();
    }       
    Intent intent = new Intent (MainActivity.this, NextActivity.class);
    startActivity(intent);
}}

これは、から値を取得しようとする次のアクティビティですSharedPreferences:

public class NextActivity extends Activity{

private SharedPreferences preferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_next);

    preferences = this.getSharedPreferences("score", MODE_WORLD_WRITEABLE);

    int value = preferences.getInt("score", 0);
    String score = "Your Score is : " + value;
    UIHelper.displayScore(this, R.id.tvScore, score );

}}

誰もその方法を知っていますか?

4

4 に答える 4

3

行を変更する必要があります

 saveScore = getPreferences(MODE_PRIVATE);      

saveScore =  getSharedPreferences("score",Context.MODE_PRIVATE);
于 2013-02-26T06:41:36.487 に答える
1

これを試して、

public class DataStorage {

private static String KEY;
public static SharedPreferences savedSession;

public void saveID(Context context, String msessionid) {
    // TODO Auto-generated method stub

    Editor editor = context
            .getSharedPreferences(KEY, Activity.MODE_PRIVATE).edit();
    editor.putString("SESSION_UID", msessionid);
    editor.commit();
}

public String getID(Context context) {

    savedSession = context.getSharedPreferences(KEY, Activity.MODE_PRIVATE);
    return savedSession.getString("SESSION_UID", "");
}
}

編集:

 DataStorage mdata = new DataStorage();

public void gotoNextAndSaveScore(View view) {
if(group.getCheckedRadioButtonId() != R.id.radio3){

   mdata.saveId(Mainactivity.this,1);
}else{
   mdata.saveId(Mainactivity.this,-1);
}   

そして から値を取得しますNextActivity

DataStorage mdata = new DataStorage();
mdata.getId(NextActivity.this);
于 2013-02-26T06:38:55.390 に答える
1

以下のようにnextActivityduringに移動するときに値を保存します。onPause()

    @Override
    protected void onPause() 
    {
      super.onPause(); 
      // Store values between instances here
      SharedPreferences preferences = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE);
      SharedPreferences.Editor editor = preferences.edit();
      editor.putString("YourStringKeyValue", "StringValue"); // value to store
      // Commit to storage
      editor.commit();
    }

以下next Activityのように、そのキーを使用してデータを取得します。onCreate

       SharedPreferences preferences = getSharedPreferences("sharedPrefs", 0);
       String name= preferences.getString("YourStringKeyValue","");
于 2013-02-26T06:40:31.520 に答える
0

間違った設定ファイルを使用しています。Activity の getPreference 関数は、その Activity にプライベートなファイルを返します。名前付きファイルバージョンを使用する必要があります- getSharedPreferences(name, mode)

于 2013-02-26T06:40:06.777 に答える