2013-10-14 208 views
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); 

    } 
+0

你爲什麼要在你的第二個活動中分享你的共享首選項? PreferenceManager.getDefaultSharedPreferences(ChapterActivity.this); –

+0

你是如何得到'mContext'的? – Kristopher

回答

1

在這打電話給你第二項活動也得到結果:

SharedPreferences prefs = (mContext).getSharedPreferences(
          "com.oxtro.trustea", Context.MODE_PRIVATE); 
+0

是的,現在它完美地工作。謝謝! – user2871937

1

onActivityResult

更改此:

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

要這樣:

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

你需要保持偏好您參考一致。當您使用一個名稱寫入首選項時,您需要使用同一名稱讀取它。

+0

這是問題所在,謝謝 – user2871937