0

私の Android アプリケーションでは、string.xml ファイルで定義された配列から値を取得し、それを Java アクティビティ クラスで使用します。アラビア語のフォントを使用する前は、魅力的に機能していました。

xml ファイルにアラビア文字を入れると、Java ファイルでそれらを比較できません。エラーが表示されます"Some characters can not be mapped using cp1252" ここにアラビア語のxmle配列があります

<string-array name="country_arrays">

        <item>لا شيء</item>
        <item>5 &#8211; 9</item>
        <item>10 &#8211; 14</item>
        <item>15 &#8211; 19</item>
        <item>20 &#8211; 24</item>
        <item>25 &#8211; 35</item>
        <item>36 &#8211; 45</item>

    </string-array>

ここにJavaコードがあります

if (s.equals("5 &#8211; 9")) {
                        message = getResources().getString(R.string.listdesc1);

                    } else if (s.equals("10 &#8211; 14")) {
                        message = getResources().getString(R.string.listdesc1);
                    } else if (s.equals("15 &#8211; 19")) {
                        message = getResources().getString(R.string.listdesc2);
                    } else if (s.equals("20 &#8211; 24")) {
                        message = getResources().getString(R.string.listdesc3);
                    } else if (s.equals("25 &#8211; 29")) {
                        message = getResources().getString(R.string.listdesc4);
                    } else if (s.equals("30 &#8211; 34")) {
                        message = getResources().getString(R.string.listdesc5);
                    } else if (s.equals("35 &#8211; 39")) {
                        message = getResources().getString(R.string.listdesc6);
                    } else if (s.equals("40 &#8211; 44")) {
                        message = getResources().getString(R.string.listdesc7);
                    } else if (s.equals("45 &#8211; 49")) {
                        message = getResources().getString(R.string.listdesc8);
                    } else if(s.equals(ذلك)){
                        message = getResources().getString(R.string.listdesc9);
                    }else if(s.equals(شيء)){
                        message=getResources().getString(R.string.listdesc0);   
                    }

                    txtv2.setText(message);
                    txtv.setText(getResources().getString(R.string.listtitle1));
                    // Toast.makeText( arg0.getContext(), message,

Android xml 配列の HTML 要素 value="1" のように、値を渡すオプションはありますか。方法があれば、実際の配列要素名ではなく、配列要素をその値と比較できます。

ただし、これを修正するのを手伝ってください。

thx事前に..

4

1 に答える 1

1

この問題にいくつか取り組んだ後、私が理解したのは、文字列配列から値を文字列ファイルに渡すと、値 (アラビア文字と - 値) に続く値を適切にキャッチできないということでした。デバッグすると、onitemselectedListner() メソッドの位置の値が常に 0 であることに気付きます。

<string-array name="country_arrays">

        <item>لا شيء</item>
        <item>5 &#8211; 9</item>
        <item>10 &#8211; 14</item>
        <item>15 &#8211; 19</item>
        <item>20 &#8211; 24</item>
        <item>25 &#8211; 35</item>
        <item>36 &#8211; 45</item>

</string-array>

したがって、Java ファイルのリストに上記の内容を入力する必要がありました。すると、データが正しく lisner メソッドに渡されていることに気付きました。文字 (A、B ... など) を使用する場合、心配する必要はありません。この問題はすべてアラビア文字に関するものでした (レイアウト ファイルがアラビア文字を Java ファイルに正しく渡すことができない理由がわかりません)。

次に、次のようにコードを管理します。

List<String> list = new ArrayList<String>();
        list.add("لا شيء");
        list.add("5 - 9");
        list.add("10 - 14");
        list.add("15 - 19");

        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(dataAdapter);

        //Log.v(LogApp,"mint value is:" + mint);

        spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {

                String s = arg0.getItemAtPosition(arg2).toString();

                if (s.equals("لا شيء")) {
                    message = getResources().getString(R.string.listdesc0);

                } else if (s.equals("5 - 9")) {
                    message = getResources().getString(R.string.listdesc1);
                } else if (s.equals("10 - 14")) {
                    message = getResources().getString(R.string.listdesc2);
                } else if (s.equals("15 - 19")) {
                    message = getResources().getString(R.string.listdesc3);
                }               txtv2.setText(message);
                //txtv.setText(getResources().getString(R.string.listtitle1));
                // Toast.makeText( arg0.getContext(), message,
                // Toast.LENGTH_LONG).show();
            }

            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }

        });
于 2012-11-06T15:19:57.903 に答える