2012-02-06 3 views
0

2 가지 버전으로 시작할 수있는 응용 프로그램이 있습니다.다른 리소스 파일로 안드로이드 응용 프로그램을 실행하십시오.

2 응용 프로그램의 주요 차이점은 리소스 파일입니다. (일부 이름은 바뀌었지만 응용 프로그램에서는 하나의 언어 만 처리합니다.)

안드로이드에서 몇 가지 특정 설정으로 @ string/hello 또는 R.string.hello가있는 2 strings.xml 파일간에 전환 할 수 있습니까? 그렇지 않다면 그 문제에 대한 최선의 접근 방법은 무엇입니까? 일부 매개 변수가있는 경우 xml 파일을 전환하는 일부 이클립스 기능을 사용할 수 있다고 상상했는데 ... 나는 apk 패키지 만 있으면 좋지만 필수는 아닙니다.

나는 클라이언트의 언어를 변경할 수 없습니다 ...

감사

편집

좋은 생각하기 Aleks. 나는 프로젯을 라이브러리로 리팩터링하고 좋은 로케일 매개 변수로 시작했습니다. 이 경우 나는 좋은 데이터베이스와 3 가지 프로젝트를 가질 수 있습니다.

답변

1

제대로 이해하면 전화에서 언어를 변경하지 않고 응용 프로그램의 언어를 전환 할 수 있기를 원합니다. 나는 이것이 유용 할 수있는 시나리오를 볼 수 있다고 생각한다.

이와 같은 작업을 시도해 볼 수 있습니다.

1) 여러 로케일/언어를 지원하는 것처럼 여러 문자열 리소스로 앱을 빌드하십시오. 매니페스트에서

2), 사용자의 작업에 configChanges="locale"을 추가

<activity android:name=".Main" android:configChanges="locale" android:label="@string/app_name" /> 

3) 앱을 처음 시작하면, 그것은 클라이언트 전화의 언어에있을 것입니다. 사용자가 앱에서 언어를 변경하면 선호하는 방식 (sqlite, 파일, 앱 번들 등)으로 새 언어를 저장하고 앱을 강제로 다시 시작합니다. 나는이에게 자신을 시도하지 않은

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     //load saved language 
     String languageToUse = ... 
     if(languageToUse != null) 
     { 
      Locale locale = new Locale(languageToLoad); 
      Locale.setDefault(locale); 
      Configuration config = new Configuration(); 
      config.locale = locale; 
      getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
     } 
     this.setContentView(R.layout.main); 
    } 

, 그래서 이것은 단지 일반적인 생각입니다 - 참조가 작동하는 경우 : 앱이 시작되면

4), 그것에 저장된 언어와 설정 한 기본 로케일을 검색 너를 위해서.

관련 문제