2012-07-12 4 views
0

나는 안드로이드 응용 프로그램에서 환경 설정을 설정하는 방법을 배우고 있습니다. 몇 가지 다른 구성 요소 (?) 것들을 파일 res/xml/prefs.xml 있습니다. 이것은 onCreate() 메소드에서 addPreferencesFromResource(R.xml.prefs);을 사용하는 Prefs.java에 의해 참조됩니다. 이해하는 바와 같이, prefs.xml 파일은 환경 설정을 설정하고 Prefs.java 파일은 prefs.xml에 액세스하여 논리를 제공합니다 (프로그래밍 할 것임).
그런 다음 내 매니페스트에, 내가 가지고있는 활동 중 하나 매니페스트 참조 Prefs.java 경우 또는 다른 주위의 방법 또는 무슨 경우 Android에서 환경 설정 - 어떻게 알 수 있습니까?

<activity 
    android:name=".Prefs" 
    android:label="Preferences" > 
    <intent-filter> 
     <action android:name="com.example.lesson1.PREFS" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

별로 확인

있다.
(현재 가장 혼란 스럽습니다) Splash.java라는 또 다른 파일이 있습니다.이 파일은 시작 화면을 표시합니다. 시작 화면의 onCreate()에,이 수행합니다

MediaPlayer ourSong = MediaPlayer.create(Splash.this, R.raw.splash); 
    SharedPreferences getPrefs = PreferenceManager 
      .getDefaultSharedPreferences(getBaseContext()); 
    boolean music = getPrefs.getBoolean("checkbox", true); 
    if (music) { 
     ourSong.start(); 
    } 

내가 환경 설정 (모든 그들 중 하나, 또는 둘 중이에 참조하는 하나)이있는 곳이 알고 어떻게 정말 모르겠어요. prefs.xml이 환경 설정 파일인지 또는 어디에 있는지는 결코 말하지 않았습니다. 그렇다면이 기본 설정은 res/xml/prefs.xml이며 자동으로 알 수 있습니까?
나는 물건의 전체적인 순서에 대해서 정말로 혼란 스럽다. 어떤 파일을 참조합니까? 매니페스트는 어떻게 작동합니까 (안드로이드 애플 리케이션에 거기에 있다는 것을 알려주는 .java 파일을 가리키는 것처럼 보이지만 실제로 모르겠습니다). 마지막으로, 환경 설정이 다른 .java 및 .xml 파일에 있음을 명시하거나, prefs.java/.xml을 호출해야합니까?
죄송합니다. 혼란스러운 경우 죄송합니다. 나는 꽤 혼란스러워서 내가 여기서 완전히 이해하고 있는지를 정말로 알 수 없다.

답변

0

앱을 컴파일하면 res 폴더의 다양한 내용이 컴파일됩니다.이 경우 xml 폴더는 원시 폴더로 인식되고 자동 생성 된 코드에 R.xml.prefs이 추가됩니다.

런타임에는이 코드가 원시 리소스로 취급되며 데이터가 읽혀집니다 (실제로 레이아웃 인고 터가 작동하는 방식과 유사하게 인플레이터를 사용하여 작성됩니다). 당신은 실제로 환경 설정을로드 할 수 있도록

InputStream is = context.getResources().openRawResource(R.xml.prefs); 

그래서 런타임에 addPreferencesFromResource(R.xml.prefs) 충분 ... 사용하여 데이터를 직접 볼 수 있습니다.

환경 설정에 액세스하는 경우 환경 설정은 SharedPreferences에 저장됩니다. 나는 "checkbox"라는 환경 설정을 가지고 있다고 가정하기 때문에 getPrefs.getBoolean("checkbox", true)을 호출하면 SharedPreference 값을 찾지 못한다. (아직 환경 설정이 설정되지 않았으므로) 두 번째 인자 인 true을 반환한다.

이것이 기본 설정에서 일관성을 유지하는 것이 중요한 이유입니다. 다른 곳에서 다른 값을 실수로 기본값으로 사용하지 않도록 환경 설정과의 인터페이스 전용 클래스를 갖는 것이 좋습니다.

res 폴더에는 자동 생성 마법이 많이 있습니다. 예를 들어, 누구나 res/values/strings.xml을 사용하여 문자열을 저장할 수 있지만 파일 이름이 실제로 중요하지는 않습니다. res/values/의 모든 내용을 읽고 병합하며 각 파일은 모든 종류의 데이터 유형 (문자열, 정수, 색상 등)을 혼합하여 사용할 수 있습니다.

+0

감사합니다. –

관련 문제