2
세 가지 활동이 있습니다. 주요 활동, 설정 활동 및 설정 활동작업 막대 제목이 작업 다시 생성 후 사라집니다.
주 열기 설정을 여는 설정입니다.
는 설치 작업에서는 내가 된 SharedPreferences
홈페이지 및 설정에내가 SharedPreference 변경에 대한 리스너가에 저장 한 사용자의 언어 변경을 할 수 있습니다.
변경 후이 활동을 다시 만듭니다 (주 및 설정). 모든 텍스트가 새로운 언어로 표시되지만 작업 표시 줄 제목이 사라지고 올바른 언어로만 나타납니다. setTitle을 사용하여 제목을 설정하는 것은 작동하지 않으며 getTitle은 올바른 텍스트를 반환합니다. 그것은 단지 보이지 않습니다.
장치를 회전시키지 않고 ActionBar 제목을 강제로 표시하는 방법에 대한 아이디어가 있습니까? 언어 클래스에서
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ctx = getBaseContext();
Language.loadLocale(ctx);
setContentView(R.layout.activity_main);
act = this;
// Set up the action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
activeTab = position;
}
});
actionBar.addTab(
actionBar.newTab()
.setText(R.string.title_tab1_active_order_name)
.setTabListener(this));
actionBar.addTab(
actionBar.newTab()
.setText(R.string.title_tab2_history_name)
.setTabListener(this));
actionBar.addTab(
actionBar.newTab()
.setText(R.string.title_tab3_tools_name)
.setTabListener(this));
listenOnLangChange();
}
private void listenOnLangChange(){
//handles language changes
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// Implementation
if (key.equals("setLanguageKey")){
Configuration config = Language.loadLocale(ctx);
onConfigurationChanged(config);
}
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
act.recreate();
}
: 나는 사용자 정의보기에 그것을 해결했다
public static Configuration changeLang(String lang, Context ctx)
{
String languageToLoad = lang; // your language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
ctx.getResources().updateConfiguration(config,
ctx.getResources().getDisplayMetrics());
Log.d("CHANGE", languageToLoad);
return config;
}
public static Configuration loadLocale(Context ctx)
{
String langPref = "setLanguageKey";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
String language = prefs.getString(langPref, "");
Log.d("LOAD", language);
return changeLang(language, ctx);
}
'android : showAsAction = "always"'xml에 넣을 수 있습니까? – g00dy
onCreate()를 게시 할 수 있습니까? 보기를 구축하는 데 문제가있는 것처럼 느껴집니다. – bofredo
showAsAction = "always"인 세 가지 항목이있는 메뉴가 있습니다. 이들은 새로운 언어로 정확하게 업데이트됩니다. 불행히도 사라지는 제목 일뿐입니다. –