2013-02-26 54 views
1

我创建了一个测验应用程序,我问了一些问题并给出了单选按钮形式的选项,现在我想存储答案的值(加上正确的答案和减去错误的一个)在SharedPreferences并显示在其他活动的结果。我已经搜查,发现该answer here如何在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); 

}} 

做任何人知道如何?

回答

3

你应该改变行

saveScore = getPreferences(MODE_PRIVATE);  

saveScore = getSharedPreferences("score",Context.MODE_PRIVATE); 
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", ""); 
} 
} 

编辑:从NextActivity

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); 
} 

,然后得到的值。

DataStorage mdata = new DataStorage(); 
mdata.getId(NextActivity.this); 
+0

很抱歉,但我会问你在哪里调用这个类的方法在我的'MainActivity'类? – 2013-02-26 06:49:59

+0

我已编辑代码检查此 – MuraliGanesan 2013-02-26 06:59:10

0

你使用了错误的偏好设置文件,对活动的getPreference函数返回私有该活动的文件。您需要使用版本 - getSharedPreferences命名的文件(名称,模式)

1

存储值时onPause()如下导航到nextActivity时:在next ActivityonCreate该键

@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(); 
    } 

,并获取数据如下图所示:

 SharedPreferences preferences = getSharedPreferences("sharedPrefs", 0); 
     String name= preferences.getString("YourStringKeyValue",""); 
相关问题