2013-11-21 3 views
1

다른 클래스에서 액세스 할 수 있도록 이미지 URL을 항목 버튼의 onClick을 통해 저장하는 방법을 파악하려고합니다.공유 환경 설정을 사용하여 이미지 URL 저장

나는 공유 환경 설정을 사용하여 이것을 달성하는 것이 가장 좋을 것이라고 생각했다. 그래서 내가 "mImageUrl"

내가 아는라는 한 문자열에서 URL을 좀하고 싶습니다 때문에 나는 이것을 달성 할 수있을 것입니다 방법과 같은 약간의 혼란 스러워요 전에

나는 공유 설정을 사용한 적이 내 String "mImageUrl"은 현재보고있는 이미지의 URL을 제공합니다. 그래서 String과 URL을 공유 환경 설정에 저장하여 특정 URL이 다른 클래스를 통해 사용될 수있게합니다.

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

다음 활동에서 :

내 요구 사항을 달성 할 수있는 좋은 방법을 공유의 환경 설정을 사용하여겠습니까, 모든 지침을 주시면 감사하겠습니다 감사

@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 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 (String, int)"메서드가 SharedPreferences.Editor 인수 (String, String)에 적용 할 수 없습니다. "hmm – Jack

+0

내 코드를 편집했습니다 .UseString을 사용하십시오. – zanky

+0

고맙습니다. – Jack

2

이 하나의 활동을 시도

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

나는 "MODE_PRIVATE"의 오류를 받고 있어요 "를 MODE_PRIVATE가에 해결 될 수없는 진술 변수 " – Jack

+0

"Context.MODE_PRIVATE'를 사용하거나 간단히 '0'을 씁니다. –

0

시도 :

SharedPreferences pr=PreferenceManager.getDefaultSharedPreferences(context); 

SharedPreferences.Editor r=pr.edit(); 

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

r.commit(); 
1

공유 환경 설정의 가져 오기/설정 작업을 처리하는 클래스를 간단하게 구현할 수 있습니다.

귀하의 프로젝트에 쉽게 통합 할 수 있도록 수업을 제공합니다.

여기 당신은 단순히/설정할 수 있습니다 우리의 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); 

희망을 수행하여 Fragment에서 SharedPreferences에 도달 할 수

. SharedPreferences

저장 :

+0

나는 Fragment를 사용하고 있기 때문에 "getActivity()"를 사용할 때 "context"를 사용할 수 없으므로 Fragment를 사용하고 있습니다. "오류가 발생합니다."메서드 setSharedPreference (Context, 문자열, 문자열, 문자열) 형식의 SharedPreferenceUtil 인수 (FragmentActivity, String, String)에 적용 할 수 없습니다. " – Jack

+0

자, 개념에주의해야합니다. 'Fragment'에서'SharedPreferences' 연산을 수행하는 것은'Context'가 아니기 때문에 작동하지 않을 것입니다. 내 대답을 편집 중입니다 – gokhanakkurt

+0

지금 "문맥"을 어떻게 바꾸어야합니까? 내 코드가 어떻게 생겼는지 확인할 수 있도록 내 대답을 업데이트했습니다. – Jack