【发布时间】:2020-06-12 07:36:11
【问题描述】:
实际上我正在创建一个多语言(英语、印地语和旁遮普语)android应用程序,所以我将用户语言首选项保存在共享首选项中,并在每个活动并更新字符串。但问题是当我选择印地语时,整个活动字符串正确更改为印地语,但底部导航仅设置为英语,当我选择旁遮普语时,整个活动字符串转换完美,但底部导航设置为印地语等循环方式,请查看以下测试用例
user Selected Language | Bottom Navigation Language
|
First time: English | English
Second time: Hindi | English
Third time: Punjabi | Hindi
Fourth time: English | Punjabi
Fifth time Hindi | English
and so on...
代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sessionManager = new SessionManager(getApplicationContext());
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
userDefaultLanguage(sessionManager.getUserLanguage());
initViews();
}
Locale myLocale;
String currentLanguage = "en";
private void userDefaultLanguage(String localeName) {
myLocale = new Locale(localeName);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
private void initViews() {
setSupportActionBar(mToolBar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
loadFragment(MainFragment.newInstance());
navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
toolbar_title.setText(R.string.home);
if (CheckInternet.isNetwork(getApplicationContext())) {
loadFragment(MainFragment.newInstance());
} else
connectToInternetToast();
return true;
case R.id.navigation_music:
if (CheckInternet.isNetwork(getApplicationContext())) {
toolbar_title.setText(R.string.music);
// toolbar_title.setTypeface(applyFonts());
loadFragment(MainFragment2.newInstance());
} else
connectToInternetToast();
return true;
case R.id.navigation_gyaan:
if (CheckInternet.isNetwork(getApplicationContext())) {
toolbar_title.setText(R.string.gallery);
loadFragment(MainFragment3.newInstance());
} else
connectToInternetToast();
return true;
case R.id.navigation_settings:
if (CheckInternet.isNetwork(getApplicationContext())) {
Intent intent2 = new Intent(getApplicationContext(), AppInformationActivity.class);
startActivity(intent2);
} else
connectToInternetToast();
return true;
}
return false;
}
});
toolbar_title.setText(R.string.home);
if (CheckInternet.isNetwork(getApplicationContext())) {
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000) {
return;
}
mLastClickTime = SystemClock.elapsedRealtime();
} else
connectToInternetToast();
}
private void connectToInternetToast() {
Toast.makeText(getApplicationContext(), "Connect to internet", Toast.LENGTH_LONG).show();
}
private void loadFragment(Fragment selectedFragment) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, selectedFragment);
transaction.commit();
}
}
【问题讨论】:
标签: android android-layout locale bottomnavigationview