Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) PreferenceActivity 에서 addPreferenceFromResource

안드로이드 개발
반응형

안드로이드(Android) PreferenceActivity 에서 addPreferenceFromResource

함수사용시Deprecated 해결

 

환경 : Eclipse Mars, Android 4.2.2

 

버전없이 되면서 PreferenceActivity 클래스에서 addPreferenceFromResource 함수는 Deprecated 되었습니다. 이부분을 해결하기 위해 PreferenceFragment 클래스를 사용해야 합니다.

 

 

PreferenceFragment 를 사용받은 클래스에 addPreferenceFromResource 함수를 사용해서 옵션 컨트롤들을 셋팅한 xml 리소스를 읽어들입니다.

 

// PreferenceFragment 클래스 사용
public static class MyPreferenceFragment extends
		PreferenceFragment {
	@Override
	public void onCreate(final Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.setting_default);
	}
}

 

이렇게 만들어진 클래스를 onCreate 생성함수에서 getFragmentManager() 사용해 트랜젝션을 수행하면 됩니다. 권고사항으로 클래스를 만들어 리소스 xml 을 읽어 들이는 이유는 파일이기 때문입니다. 이렇게 하지 않으면 파일을 읽는 도중 에러가 발생해서 다 읽어들이지 못할 때 전체를 롤백하지 않고 일부만 셋팅하게 되겠죠. 트랜젝션은 이런 문제를 해결할수 있습니다. 아래는 deprecated 를 해결한 전체소스 내용입니다.

 

import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;

public class PreferenceSetting extends PreferenceActivity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		getFragmentManager()
				.beginTransaction()
				.replace(android.R.id.content,
						new MyPreferenceFragment()).commit();
	}
	
	// PreferenceFragment 클래스 사용
	public static class MyPreferenceFragment extends
			PreferenceFragment {
		@Override
		public void onCreate(final Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			addPreferencesFromResource(R.xml.setting_default);
		}
	}
}
반응형
Posted by 녹두장군1
,