0

我不在应用程序中管理语言,但如果用户修改他的语言,则必须修改应用程序中的文本。如果我像这样在 xml 中使用文本:

<TextViewCustomFont
        android:id="@+id/info_connexion"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/discover"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="20dp"
        android:text="@string/have_account" />

有用。例如,我用法语启动我的应用程序,然后将应用程序置于后台并更改手机设置。我设置了一种英语,当应用程序处于前台时,文本会更新。

但由于某些原因,我必须使用以下方法动态加载文本:

int nameResourceID = ctx.getResources().getIdentifier(key, "string", ctx.getApplicationInfo().packageName);
if (nameResourceID == 0)
    return key;
else
    return ctx.getString(nameResourceID);

而使用这种方法,它不起作用。当然如果我再次启动该应用程序,它可以工作,但这是一种奇怪的行为,因为可绘制对象已正确修改,而文本则没有

我怎样才能做到这一点 ?

4

1 回答 1

0

试试这个方法

public String getStringDynamically(String identfire, Context mContext) {
    try {
        int nameResourceID = mContext.getResources().getIdentifier(identfire, "string", ((Activity) mContext).getPackageName());
        if (nameResourceID == 0)
            return identfire;
        else
            return mContext.getString(nameResourceID);
    } catch (Exception e) {
    }
    return identfire;
}
于 2013-09-24T09:06:08.747 回答