4

私のアプリでは、ローカリゼーションのvalues-arためにアラビア語の文字列用のフォルダーがあります。問題は、アラビア語がインストールされていない電話では、アラビア文字が接続されていないように見えることです。アラビア語のアルファベットを結合するためにArabicReshapeクラスを使用していますが、文字列が多すぎるため、手動でreshaperクラスを1つずつ適用し続けることができません。

ファイルからすべての文字列を取得し、strings.xmlそれらをループして一度にクラスを文字列に適用できるかどうかを知りたいです。これは可能ですか?

4

2 に答える 2

9

1つの特定の文字列が必要なときにクラスを呼び出すのではなく、すべての文字列を反復処理する必要がある理由がわかりません。

しかし、あなたが尋ねたように...

私はこれがあなたを助けるかもしれないと思います;-)

Field[] fields = R.string.class.getFields();
    for(final Field field : fields) {
       String name = field.getName(); //name of string
       try{
           int id = field.getInt(R.string.class); //id of string
       }catch (Exception ex) {
           //do smth
       }
    }
于 2013-01-17T22:57:42.967 に答える
1

リソースマネージャーがvalues-ar/strings.xmlから文字列を引き出し、リフレクションR.string.class.getFields()を使用してフィールドのリストを取得できるように、 LOCALEARに設定する必要があります。。次に、文字列を繰り返し処理して、形状を変更します。

次のコードスニペットのようなものを試してください。

Resources resources = getResources();
int resourceId = 0;
String resourceString;
Field[] stringFields = R.string.class.getFields();
for(Field stringField : stringFields) {

    try {
        resourceId = stringField.getInt(R.string.class);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
        continue;
    } catch (IllegalAccessException e) {
        e.printStackTrace();
        continue;
    }

    resourceString = resources.getString(resourceId);
    if(resourceString != null && resourceString.length() > 0) {
        // do your reshaping on the resoureString
    }
}
于 2013-01-17T23:13:13.587 に答える