PreferenceActivity를 사용하여 응용 프로그램의 일부 설정을 보여줍니다. onCreate (및 완전한 클래스 메서드)가 다음과 같이 보이도록 xml 파일을 통해 설정을 팽창시킵니다.
public class FooActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.preference);
}
}
의 javadoc는 PreferenceActivity를 PreferenceFragment는 것을 말한다
이러한 환경 설정은 사용자가 상호 작용할 때 SharedPreferences에 자동으로 저장됩니다. 이 활동의 환경 설정 계층이 사용할 SharedPreferences 인스턴스를 검색하려면이 활동과 동일한 패키지의 컨텍스트로 getDefaultSharedPreferences (android.content.Context)를 호출하십시오.
그러나 다른 활동에서 SharedPreference의 이름을 어떻게 얻습니까? 나는 전화 만 할 수있다
getSharedPreferences(name, mode)
다른 활동에서 PreferenceActivity에서 사용한 SharedPreference의 이름이 필요합니다. 이름은 무엇입니까? 어떻게 검색 할 수 있습니까?
답변
import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// then you use
prefs.getBoolean("keystring", true);
최신 정보
에 따르면 공유 환경 설정 | Sai Geetha MN의 Android 개발자 튜토리얼 (13 부) ,
많은 애플리케이션이 특정 애플리케이션 또는 활동의 설정에서 사용자 환경 설정을 캡처하는 방법을 제공 할 수 있습니다. 이를 지원하기 위해 Android는 간단한 API 세트를 제공합니다.
환경 설정은 일반적으로 이름 값 쌍입니다. 응용 프로그램의 다양한 활동에서 “공유 환경 설정”으로 저장할 수 있습니다 (현재 프로세스간에 공유 할 수는 없습니다). 또는 활동별로 저장해야 할 수도 있습니다.
-
공유 기본 설정 : 공유 기본 설정은 응용 프로그램의 모든 구성 요소 (활동, 서비스 등)에서 사용할 수 있습니다.
-
활동 처리 환경 설정 : 이러한 환경 설정은 특정 활동 내에서만 사용할 수 있으며 응용 프로그램의 다른 구성 요소에서는 사용할 수 없습니다.
공유 환경 설정 :
공유 환경 설정은 클래스 의 getSharedPreferences
메소드를 사용하여 관리됩니다 Context
. 기본 설정은 기본 파일 (1)에 저장 되거나 기본 설정을 참조하는 데 사용할 파일 이름 (2) 을 지정할 수 있습니다 .
(1) 권장되는 방법 은 파일 이름을 지정하지 않고 기본 모드에서 사용하는 것입니다
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
(2) 파일 이름을 지정할 때 인스턴스를 얻는 방법은 다음과 같습니다.
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
기본 설정의 작동 모드입니다. 기본 모드이며 생성 된 파일이 호출 응용 프로그램에서만 액세스됨을 의미합니다. 지원되는 다른 두 가지 모드는 MODE_WORLD_READABLE
및 MODE_WORLD_WRITEABLE
입니다. MODE_WORLD_READABLE
다른 응용 프로그램 에서는 작성된 파일을 읽을 수는 있지만 수정할 수는 없습니다. MODE_WORLD_WRITEABLE
다른 응용 프로그램의 경우 에도 작성된 파일에 대한 쓰기 권한이 있습니다.
마지막으로 환경 설정 인스턴스가 있으면 환경 설정에서 저장된 값 을 검색하는 방법은 다음과 같습니다.
int storedPreference = preferences.getInt("storedInt", 0);
환경 설정 파일에 값 을 저장 하려면 SharedPreference.Editor
오브젝트를 사용해야합니다. 클래스 Editor
에서 중첩 된 인터페이스입니다 SharedPreference
.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
편집기는 파일에서 환경 설정 값 remove()
과 같은 및 clear()
삭제 방법도 지원 합니다.
활동 환경 설정 :
공유 기본 설정은 다른 응용 프로그램 구성 요소에서 사용할 수 있습니다. 그러나 다른 구성 요소와 환경 설정을 공유 할 필요가없고 활동 개인 환경 설정을 원하는 경우 활동 getPreferences()
방법 을 사용하여이를 수행 할 수 있습니다 . 이 getPreference
메소드는 getSharedPreferences()
환경 설정 파일 이름에 대한 활동 클래스 이름과 함께 메소드를 사용합니다 .
다음은 환경 설정을 얻는 코드입니다
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
값을 저장하는 코드는 공유 환경 설정의 경우와 동일합니다.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
데이터베이스에 활동 상태 저장과 같은 다른 방법을 사용할 수도 있습니다. 참고 Android에는이라는 패키지도 포함되어 있습니다 android.preference
. 패키지는 애플리케이션 환경 설정 UI를 구현하기위한 클래스를 정의합니다.
더 많은 예제를 보려면 개발자 사이트에서 Android의 데이터 스토리지 게시물을 확인 하십시오.
답변
에 액세스 getDefaultSharedPreferenes()
할 수없는 경우 getSharedPreferences(name, mode)
대신 사용할 수 있으며 올바른 이름 만 전달하면됩니다.
Android는이 이름을 생성합니다 (프로젝트의 패키지 이름을 기반으로 할 수 있습니까?). 당신은 다음 코드를 넣어 그것을 얻을 수 SettingsActivity
onCreate()
, 무엇을보고 preferencesName
있다.
String preferencesName = this.getPreferenceManager().getSharedPreferencesName();
문자열은 다음과 같아야 com.example.projectname_preferences
합니다. 프로젝트 어딘가에 하드 코드를 전달하고 전달하면 getSharedPreferences()
좋을 것입니다.
답변
이 방법들을 먼저 선언하십시오 ..
public static void putPref(String key, String value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}
public static String getPref(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}
그런 다음 준비를 할 때 이것을 호출하십시오.
putPref("myKey", "mystring", getApplicationContext());
준비를 원할 때 이것을 호출하십시오.
getPref("myKey", getApplicationContext());
아니면 이 개체를 사용할 수 있습니다 https://github.com/kcochibili/TinyDB–Android-Shared-Preferences-Turbo
를 모든 것을 더욱 단순화
예:
TinyDB tinydb = new TinyDB(context);
tinydb.putInt("clickCount", 2);
tinydb.putFloat("xPoint", 3.6f);
tinydb.putLong("userCount", 39832L);
tinydb.putString("userName", "john");
tinydb.putBoolean("isUserMale", true);
tinydb.putList("MyUsers", mUsersArray);
tinydb.putImagePNG("DropBox/WorkImages", "MeAtlunch.png", lunchBitmap);
답변
모든 곳에서 컨텍스트를 전달해야하는 것은 정말 짜증납니다. 코드가 너무 장황하고 관리가 불가능 해집니다. 대신 모든 프로젝트 에서이 작업을 수행합니다 …
public class global {
public static Activity globalContext = null;
메인 액티비티에서 설정
@Override
public void onCreate(Bundle savedInstanceState) {
Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(
global.sdcardPath,
""));
super.onCreate(savedInstanceState);
//Start
//Debug.startMethodTracing("appname.Trace1");
global.globalContext = this;
또한 모든 환경 설정 키는 언어 독립적이어야합니다. 아무도 언급하지 않은 충격입니다.
getText(R.string.yourPrefKeyName).toString()
이제 한 줄의 코드에서 이와 같이 아주 간단하게 호출하십시오.
global.globalContext.getSharedPreferences(global.APPNAME_PREF, global.MODE_PRIVATE).getBoolean("isMetric", true);
답변
확인란이 있고 자바 파일에서 값을 가져 오려면 true / false입니다.
사용하다–
Context mContext;
boolean checkFlag;
checkFlag=PreferenceManager.getDefaultSharedPreferences(mContext).getBoolean(KEY,DEFAULT_VALUE);`
답변
2019 업데이트
당신은 단순히 PowerPreference
라이브러리 를 사용할 수 있습니다
https://github.com/AliEsaAssadi/Android-Power-Preference
공유 환경 설정 인스턴스 가져 오기
기본 인스턴스를 얻으려면 전화해야합니다.
PowerPreference.getDefaultFile()
또는 특정 환경 설정 파일을 원하는 경우
PowerPreference.getFileByName(fileName)
데이터 쓰기 :
PowerPreference.getDefaultFile().put(key,value)
데이터 얻기
PowerPreference.getDefaultFile().getString(key,value)
답변
나를 위해 일한 소스 코드를 따라보십시오.
//Fetching id from shared preferences
SharedPreferences sharedPreferences;
sharedPreferences =getSharedPreferences(Constant.SHARED_PREF_NAME, Context.MODE_PRIVATE);
getUserLogin = sharedPreferences.getString(Constant.ID_SHARED_PREF, "");