programing

Android에서 PreferenceActivity에서 SharedPreferences를 가져오려면 어떻게 해야 합니까?

bestcode 2022. 9. 1. 23:17
반응형

Android에서 PreferenceActivity에서 SharedPreferences를 가져오려면 어떻게 해야 합니까?

PreferenceActivity를 사용하여 응용 프로그램의 설정을 표시하고 있습니다.xml 파일을 통해 설정을 확장하여 onCreate(및 전체 클래스 메서드)를 다음과 같이 만듭니다.

public class FooActivity extends PreferenceActivity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        addPreferencesFromResource(R.xml.preference);
    }
}

PreferenceActivity PreferenceFragment의 javadoc에는 다음과 같이 기술되어 있습니다.

이러한 기본 설정은 사용자가 공유 기본 설정과 대화할 때 자동으로 공유 기본 설정에 저장됩니다.이 액티비티의 프리퍼런스 계층이 사용하는 SharedPreferences 인스턴스를 가져오려면 getDefaultSharedPreferences(android.content)를 호출합니다.콘텍스트)가 이 액티비티와 같은 패키지에 포함되어 있는 경우.

그러나 다른 활동에서 SharedPreference 이름을 얻는 방법은 무엇입니까?전화밖에 할 수 없다

getSharedPreferences(name, mode)

PreferenceActivity에서 사용한 SharedPreference 이름이 필요합니다.이름 또는 검색 방법은 무엇입니까?

import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// then you use
prefs.getBoolean("keystring", true);

갱신하다

공유 기본 설정 | Sai Geetha M N의 Android 개발자 튜토리얼 (Part 13)에 따르면,

많은 응용 프로그램은 특정 응용 프로그램 또는 액티비티의 설정에 대한 사용자 기본 설정을 캡처하는 방법을 제공합니다.이를 지원하기 위해 Android는 간단한 API 세트를 제공합니다.

기본 설정은 일반적으로 이름 값 쌍입니다.이러한 설정은, 애플리케이션의 다양한 액티비티에 걸쳐 「공유 프리퍼런스」로서 보존할 수 있습니다(현재는 프로세스간에 공유할 수 없습니다).또는 특정 활동에 대해 저장해야 하는 것일 수도 있습니다.

  1. 공유 기본 설정:공유 기본 설정은 애플리케이션의 모든 구성 요소(활동, 서비스 등)에서 사용할 수 있습니다.

  2. 액티비티 처리 프리퍼런스:이러한 기본 설정은 특정 활동 내에서만 사용할 수 있으며 애플리케이션의 다른 구성 요소에서는 사용할 수 없습니다.

공유 기본 설정:

공유 기본 설정은 다음 방법으로 관리됩니다.getSharedPreferences의 of의 Contextclass. 기본 설정은 기본 파일 (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는 프리퍼런스의 동작 모드입니다.이것은 디폴트 모드이며, 작성된 파일은 발신측 애플리케이션만으로 액세스 됩니다.지원되는 기타 2가지 모드는 다음과 같습니다.MODE_WORLD_READABLE그리고.MODE_WORLD_WRITEABLEMODE_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();

Editor는 다음과 같은 메서드도 지원합니다.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의 Data Storage 게시물을 확인하십시오.

에 액세스 할 수 없는 경우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);
}

그런 다음 pref를 넣고 싶을 때 호출합니다.

putPref("myKey", "mystring", getApplicationContext());

pref를 받고 싶을 때 호출:

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

체크박스가 있고 임의의 Java 파일에서 해당 값(true/false)을 가져오려면 --

사용법--

Context mContext;
boolean checkFlag;

checkFlag=PreferenceManager.getDefaultSharedPreferences(mContext).getBoolean(KEY,DEFAULT_VALUE);`

소스코드를 따라해 보세요.나에게 효과가 있었어요.

//Fetching id from shared preferences
    SharedPreferences sharedPreferences;
    sharedPreferences =getSharedPreferences(Constant.SHARED_PREF_NAME, Context.MODE_PRIVATE);
    getUserLogin = sharedPreferences.getString(Constant.ID_SHARED_PREF, "");

언급URL : https://stackoverflow.com/questions/2614719/how-do-i-get-the-sharedpreferences-from-a-preferenceactivity-in-android

반응형