我的共享偏好总是违约,为什么会这样? 这是我插入值的部分:
holder.camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
RowData rd = getItem(position); //get list_row from i
System.out.println("OnClick Camera");
Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
SharedPreferences prefs = (mContext).getSharedPreferences(
"com.oxtro.trustea", Context.MODE_PRIVATE);
SharedPreferences.Editor prefEditor = prefs.edit();
prefEditor.putString("crit_id_pref",String.valueOf(rd.criteria_id));
prefEditor.commit();
((Activity)mContext).startActivityForResult(takePicture, 0);
}
});
这是我检索其值的地方,该值始终是默认值而不是所需的值:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK)
return;
Uri uri = data.getData();
System.out.println("File path is " + uri.toString());
String path = getRealPathFromURI(uri);
System.out.println("Real path is " + path);
imageupload= new ImageUploadManager(ChapterActivity.this);
imageupload.open();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(ChapterActivity.this);
String t_critid = preferences.getString("crit_id_pref", "DEFAULT");
System.out.println("@OnActivityResult | shared pref crit id: "+t_critid);
}
答案 0 :(得分:1)
也可以在第二个活动中进行此调用,以获得结果:
SharedPreferences prefs = (mContext).getSharedPreferences(
"com.oxtro.trustea", Context.MODE_PRIVATE);
答案 1 :(得分:1)
在onActivityResult
,
改变这个:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(ChapterActivity.this);
对此:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences("com.oxtro.trustea", Context.MODE_PRIVATE);
您需要保持偏好引用的一致性。当您使用一个名称写入偏好时,您需要使用相同的名称进行阅读。