描述:我有一个应用程序,添加保存和显示活动对象,并显示一个Toast
消息这样做。我也有两种语言的程序运行,为它们提供了资源文件。
问题:除了成功时显示的Toast
消息外,翻译对所有UI元素都能完美工作。我正在为它提供应用程序上下文,但如果我切换语言,它将以另一种语言显示Toast
,而另一个UI使用正确的语言。两种语言的资源不包含相同的string
。我做错了什么?
以下是活动保存代码的一部分:
private void uploadActivities(FirebaseFirestore db, ArrayList<ActivityModel> activities) {
for (int i = 0; i < allRecurringActivities.size(); i++) {
db.collection("Project").document(Prefs.getString("iD",
GlobalObject.FIRESTORE_ID))
.collection("activities")
.document(activities.get(i).getId())
.set(activities.get(i))
.addOnSuccessListener(unused -> {
Toast.makeText(context, "" +
context.getApplicationContext().getResources().getString(R.string.success) +
"!", Toast.LENGTH_SHORT).show();
for (ActivityModel allRecurringActivity : allRecurringActivities) {
AlarmUtils.setAlarm(context, allRecurringActivity);
}
}
)
.addOnFailureListener(e -> Log.d("uploadActivities", "FAILED"));
}
}
1条答案
按热度按时间y1aodyip1#
将
Activity
用作字符串等面向用户的元素的Context
,而不是Application
。很多资源覆盖机制,比如应用内语言切换器,都是通过更新
Activity
中的资源来实现的,其他的Context
没有更新,在问题中你使用的应用内语言切换并不明显(尽管这可以解释这种行为)-没有它,Application
也可以访问相同的资源。Activity
是用于用户界面的正确上下文。