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 回答