2013-11-21 70 views
1

我想弄清楚如何通過onClick項目按鈕實現存儲圖像URL,以便其他類可以訪問它們。使用共享首選項來存儲圖像URL

我環顧四周,看到最好使用共享偏好來實現這一點。

我從來沒有使用共享偏好之前,所以我和我怎麼能做到這一點,因爲我想獲得從字符串我已經被稱爲「mImageUrl」

我知道URL有點困惑我字符串「mImageUrl」會給我當前正在查看的圖像的URL,所以我喜歡以某種方式將我的字符串中的字符串/ URL存儲到共享首選項,以便特定的URL可以通過另一個類使用。

會使用共享的首選項是一個很好的方式來達到我的要求, 任何指導,將不勝感激感謝

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.SetWallpaper: 
     new SetWallpaperAsync(getActivity()).execute(mImageUrl); 

     break; 


    case R.id.SaveWallpaper: 
     new SaveWallpaperAsync(getActivity()).execute(mImageUrl); 

     break; 

    case R.id.FavouriteWallpaper: 
     //Use shared preferences here somehow: 


       SharedPreferences preferences = this.getActivity().getSharedPreferences("pref",0); 

     SharedPreferenceUtil.setSharedPreference(context, "ImageKey", mImageUrl); 

     String url = SharedPreferenceUtil.getSharedPreference(context,"ImageKey",null); 

     if(url != null){ 
      // set image source here.. 
     } 

     break; 

    } 
    return super.onOptionsItemSelected(item); 
} 

回答

2

試試這個代碼:

保存在SharedPreferences

SharedPreferences prefs; 
prefs = PreferenceManager.getDefaultSharedPreferences(contextActivity); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putString("imgUrl", UrlString); 
editor.commit(); 

以檢索值:

prefs = PreferenceManager.getDefaultSharedPreferences(contextActivity); 
prefs.getString("imgUrl", null); 
+0

錯誤「putInt」陳述「方法putInt(字符串,int)的類型SharedPreferences.Editor不適用於參數(字符串,字符串)「hmm – Jack

+0

編輯我的代碼。使用'putString' – zanky

+0

感謝它修復了它 – Jack

2

試試這個一 活動:

SharedPreferences sp; 
SharedPreferences.Editor edit; 
sp = getSharedPreferences("enter", MODE_PRIVATE); 
edit = sp.edit(); 
edit.putString("imagerul", user_validate); 
edit.commit(); 

在接下來的活動:

SharedPreferences sp = getSharedPreferences("enter", MODE_PRIVATE); 
sp.getString("imageurl", "fdgf")); 
+0

我得到的錯誤 「MODE_PRIVATE」 指出「MODE_PRIVATE不能被解析爲一個變量「 – Jack

+0

使用'Context.MODE_PRIVATE'或者直接寫'0'。 –

0

Try:

SharedPreferences pr=PreferenceManager.getDefaultSharedPreferences(context); 

SharedPreferences.Editor r=pr.edit(); 

r.putString("name","yourlink"); 

r.commit(); 
1

您可以簡單地實現一個處理共享首選項的get/set操作的類。

我將提供一個課程,以便您可以輕鬆集成到您的項目中。

這裏是我們SharedPreferenceUtil

import android.app.Application; 
import android.content.Context; 
import android.content.SharedPreferences; 

public class SharedPreferenceUtil { 

    public static String getSharedPreference(Activity activity, String prefName, String key, String defaultValue){ 
     SharedPreferences prefs = activity.getSharedPreferences(prefName,0); 
     String pref = prefs.getString(key, defaultValue); 
     return pref; 
    } 

    public static void setSharedPreference(Activity activity, String prefName, String key, String value){ 
     SharedPreferences prefs = activity.getSharedPreferences(prefName,0); 
     SharedPreferences.Editor editor = prefs.edit(); 

     // edit and commit 
     editor.putString(key, value); 
     editor.commit(); 
    } 
} 

你可以簡單地設置/獲取從下面的代碼示例你的行動嗜好。

// You can set your shared preferences like following. 
SharedPreferenceUtil.setSharedPreference(this.getActivity(),"pref","yourImageKey","yourImageUrl"); 

// and you can get your shared preferences like following. 
String url = SharedPreferenceUtil.getSharedPreference(this.getActivity(),"pref","yourImageKey",null); 

if(url != null){ 

} 

編輯:

您可以通過以下

SharedPreferences preferences = this.getActivity().getSharedPreferences("pref",0); 

希望這可以幫助實現從FragmentSharedPreferences

+0

我正在使用片段,所以我不能使用「上下文」,當我嘗試使用「getActivity()」,因爲我使用的是片段,我得到錯誤「The method setSharedPreference(Context,字符串,字符串,字符串)類型SharedPreferenceUtil不適用於參數(FragmentActivity,字符串,字符串)「 – Jack

+0

好的,你應該小心的概念。從'Fragment'執行'SharedPreferences'操作將不起作用,因爲它不是'Context'。我正在編輯我的答案 – gokhanakkurt

+0

現在我應該用什麼來替換「背景」?更新我的答案,所以你可以看到我的代碼看起來像:) – Jack