0

我总是在我的共享偏好中默认,为什么会发生这种情况?这是我插入值的部分:

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

    }
4

2 回答 2

1

在您的第二个活动中也进行此调用,以获得结果:

 SharedPreferences prefs = (mContext).getSharedPreferences(
                          "com.oxtro.trustea", Context.MODE_PRIVATE);
于 2013-10-14T07:57:48.420 回答
1

onActivityResult,

改变这个:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(ChapterActivity.this); 

对此:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences("com.oxtro.trustea", Context.MODE_PRIVATE);

您需要保持您引用的首选项一致。当您使用一个名称写入首选项时,您也需要使用相同的名称读取它。

于 2013-10-14T08:05:39.673 回答