public class MainActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  Resources themeR = null; //Resources 저장 대상
  try {
   //com.example.testskin01 패키지에서 Resources 가져옴
   themeR = getThemeResources("com.example.testskin01", this);
  } catch (NameNotFoundException e) {
   e.printStackTrace();
  }
  
  // activity_main2 레이아웃의 ID값 가져오기
  int resID = themeR.getIdentifier("activity_main2" , "layout", "com.example.testskin01");
  
  //id값에 따라 레이아웃 불러와 적용
  View themeLayout = (View)themeR.getLayout(resID);
  
  // 레이아웃 적용.
  setContentView(themeLayout); 
 }
 //다른 어플에서 Resources 가져오는 메소드
 private static Resources getThemeResources(String themePackage, Context context) throws NameNotFoundException {
     try {
         return context.getPackageManager().getResourcesForApplication(themePackage);
     } catch (Exception e) {
         return null;
     }
 }
 
}
	안녕하세요?
	현재 개발중인 어플에 스킨 변경 기능을 구현 중인데요.
	여기저기 자료를 찾아보니 카톡과 같은 형식으로 하는 것이 제일 나은듯 하더라구요.
	카톡에 적용된 방식은..
	다른 패키지에 Resources 자료를 넣어두고..
	스킨을 변경할때는 그 패키지를 설치한 후 Resources자료를 가져와서 대체하는 방식 인듯 하더군요.
	 
	그래서 이곳 저곳 뒤지며 자료를 찾아본 결과..
	저런 소스가 만들어졌습니다..
	 
	시험할 기기에
	com.example.testskin01 이라는 패키지를 설치하고
	그 패키지 내에는 activity_main2.xml 라는 레이아웃이 있습니다.
	 
	그리고 액티비티를 가진 패키지에 위의 소스를 기입 해서 실행 시켰죠..
	그런데.. activity_main2의 리소스ID 까지는 잘 불러와지는데
	 
	View themeLayout = (View)themeR.getLayout(resID);
	이부분.. 이부분에서 꼭 에러가 나더라구요..
	에러는
	java.lang.ClassCastException: android.content.res.XmlBlock$Parser
	이라고 뜨네요....
	저에게 도움을 주실수 있으신분들의 답변을 기다리고 있겠습니다.