共享首选项始终采用默认值

时间:2013-10-14 07:56:13

标签: java android sharedpreferences

我的共享偏好总是违约,为什么会这样? 这是我插入值的部分:

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

    }

2 个答案:

答案 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);

您需要保持偏好引用的一致性。当您使用一个名称写入偏好时,您需要使用相同的名称进行阅读。