支持多种语言的Android应用程序

支持多种语言的Android应用程序,android,menu,Android,Menu,我必须用3种语言创建应用程序, 这是很好的和工作的一切,但与自动加载语言我有问题。 我用过这个方法 但它并没有提到菜单。 这是我在updateTexts()函数中对菜单所做的操作 /*for menus*/ MenuItem gpscrp = menu.findItem(R.id.gpscrp); gpscrp.setTitle(R.string.m_gcp); /*for other text on the app */ a_te= getString(R.string.a_te);

我必须用3种语言创建应用程序, 这是很好的和工作的一切,但与自动加载语言我有问题。 我用过这个方法 但它并没有提到菜单。 这是我在updateTexts()函数中对菜单所做的操作

/*for menus*/     
MenuItem gpscrp = menu.findItem(R.id.gpscrp);
gpscrp.setTitle(R.string.m_gcp);
/*for other text on the app */
a_te= getString(R.string.a_te);
但我的问题是当我在
OnCreate函数中更改语言时,比如(
changeLang(“en”)
) 我在这一行得到错误,
updateTexts()
我不知道是什么问题?
但当我在加载应用程序后使用
changeLang(“en”)
时,它是有效的。我的意思是当我从其他功能调用它时,比如按下按钮

注意:它适用于应用程序上的文本,问题在于菜单。

onCreate(…)
oncreateoptions菜单(…)
之前被调用,因此您的全局变量
menu
为空且
MenuItem gpscrp=menu.findItem(R.id.gpscrp)将引发NullPointerException


首先检查菜单是否为空就足够了。

谢谢,我在updateTexts()上添加了一个异常,但是如何在加载时加载值,所有字符串都是空的。我在OnCreateOptions菜单中添加了loadLocale()函数,它工作正常,不会有问题吧?是的,只需在OnCreateOptions菜单中设置文本,如果你不打算在加载活动后更改语言,我正在OnCreate中更改区域设置并更新OnCreateOptions菜单中的文本,它工作正常,非常感谢。