【问题标题】:Cannot find symbol variable inside values-es folder在 values-es 文件夹中找不到符号变量
【发布时间】:2020-03-01 03:39:01
【问题描述】:

我正在尝试使用在名为 values-es 的文件夹中创建的字符串数组变量,但是当我尝试调用它时,它会显示 cannot find symbol variable myStrings2。我不确定为什么它不起作用,因为我所做的只是将所有内容从我的strings.xml 复制到我的strings.xml (es) 版本并更改了数组名称。

我正在尝试使用 xml 文件中的 myStrings 和 myStrings2,因此根据系统语言是什么,它将显示适当的语言

我在两个不同的文件中使用了它们,ColorAdapter(在 getElementFromColors 函数中)和PaletteActivity(在 onCreate() 中)并在两个文件中都收到了错误消息

颜色适配器

package edu.temple.coloractivity;

import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.SpinnerAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Locale;

public class ColorAdapter extends BaseAdapter {
    ArrayList<Integer> colors;
    Context context;

    public ColorAdapter(Context context){

        this.context=context;
        colors = new ArrayList<Integer>();
        int retrieve []=context.getResources().getIntArray(R.array.myColors);
        for(int i:retrieve)
        {
            colors.add(i);
        }
    }
    @Override
    public int getCount() {
        return colors.size();
    }

    @Override
    public Object getItem(int args) {
        return colors.get(args);
    }

    @Override
    public long getItemId(int args) {
        return args;
    }

    public String getElementFromColors(int position){
        String CurrentLang = Locale.getDefault().getLanguage();
        if(CurrentLang=="es"){
            String retrieve[] = context.getResources().getStringArray(R.array.myStrings2);
            return retrieve[position];
        }else{
            String retrieve[] = context.getResources().getStringArray(R.array.myStrings);
            return retrieve[position];
        }


    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater=LayoutInflater.from(context);
        convertView=inflater.inflate(android.R.layout.simple_spinner_dropdown_item, null);
        TextView txv=(TextView)convertView.findViewById(android.R.id.text1);
        txv.setBackgroundColor(colors.get(position));
        txv.setText(getElementFromColors(position));
        return convertView;
    }

}

PaletteActivity

package edu.temple.coloractivity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.media.session.PlaybackState;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.ArrayList;
import java.util.Locale;


public class PaletteActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String CurrentLang = Locale.getDefault().getLanguage();
        setTitle("Palette Activity");
        final Spinner spinner = findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.myColors, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(
                android.R.layout.simple_spinner_dropdown_item);
        if(CurrentLang=="es"){
            ArrayAdapter<CharSequence> stringNames = ArrayAdapter.createFromResource(this,R.array.myStrings2, android.R.layout.simple_spinner_item);
            stringNames.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        }else{
            ArrayAdapter<CharSequence> stringNames = ArrayAdapter.createFromResource(this,R.array.myStrings, android.R.layout.simple_spinner_item);
            stringNames.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        }


        spinner.setAdapter(new ColorAdapter(this));

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if(position == 0){
                    view.setBackgroundResource(R.color.white);
                }
                else if(position == 1){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",1);
                    PaletteActivity.this.startActivity(i);
                }else if(position == 2){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",2);
                    PaletteActivity.this.startActivity(i);

                }else if(position == 3){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",3);
                    PaletteActivity.this.startActivity(i);

                }else if(position == 4){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",4);
                    PaletteActivity.this.startActivity(i);

                }else if(position == 5){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",5);
                    PaletteActivity.this.startActivity(i);

                }else if(position == 6){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",6);
                    PaletteActivity.this.startActivity(i);

                }else if(position == 7){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",7);
                    PaletteActivity.this.startActivity(i);

                }else if(position == 8){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",8);
                    PaletteActivity.this.startActivity(i);

                }else if(position == 9){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",9);
                    PaletteActivity.this.startActivity(i);
                }else if(position == 10){
                    view.setBackgroundResource(R.color.white);
                    Intent i = new Intent(PaletteActivity.this, CanvasActivity.class);
                    i.putExtra("position",10);
                    PaletteActivity.this.startActivity(i);
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }

}

CanvasActivity

package edu.temple.coloractivity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Locale;

public class CanvasActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_canvas);

        String CurrentLang = Locale.getDefault().getLanguage();
        TextView text = findViewById(R.id.newColor);

        final View newBackground;
        newBackground = this.getWindow().getDecorView();
        System.out.println(Locale.getDefault().getLanguage());


        Intent i = getIntent();
         int pos = i.getIntExtra("position",0);


                if(pos == 1){
                    newBackground.setBackgroundResource(R.color.silver);
                    if(CurrentLang=="es"){
                        text.setText("Plata");
                    }
                    else{
                        text.setText("Silver");
                    }

                }else if(pos == 2){
                    newBackground.setBackgroundResource(R.color.pink);
                    if(CurrentLang=="es"){
                        text.setText("Rosado");
                    }
                    else{
                        text.setText("Pink");
                    }
                }else if(pos == 3){
                    newBackground.setBackgroundResource(R.color.red);
                    if(CurrentLang=="es"){
                        text.setText("Rojo");
                    }
                    else{
                        text.setText("Red");
                    }
                }else if(pos == 4){
                    newBackground.setBackgroundResource(R.color.orange);
                    if(CurrentLang=="es"){
                        text.setText("Naranja");
                    }
                    else{
                        text.setText("Orange");
                    }
                }else if(pos == 5){
                    newBackground.setBackgroundResource(R.color.yellow);
                    if(CurrentLang=="es"){
                        text.setText("Amarillo");
                    }
                    else{
                        text.setText("Yellow");
                    }
                }else if(pos == 6){
                    newBackground.setBackgroundResource(R.color.green);
                    if(CurrentLang=="es"){
                        text.setText("Verde");
                    }
                    else{
                        text.setText("Green");
                    }
                }else if(pos == 7){
                    newBackground.setBackgroundResource(R.color.blue);
                    if(CurrentLang=="es"){
                        text.setText("Azul");
                    }
                    else{
                        text.setText("Blue");
                    }
                }else if(pos == 8){
                    newBackground.setBackgroundResource(R.color.indigo);
                    if(CurrentLang=="es"){
                        text.setText("índigo");
                    }
                    else{
                        text.setText("Indigo");
                    }
                }else if(pos == 9){
                    newBackground.setBackgroundResource(R.color.violet);
                    if(CurrentLang=="es"){
                        text.setText("Violeta");
                    }
                    else{
                        text.setText("Violet");
                    }
                }else if(pos == 10){
                    newBackground.setBackgroundResource(R.color.brown);
                    if(CurrentLang=="es"){
                        text.setText("Marrón");
                    }
                    else{
                        text.setText("Brown");
                    }
                }
        }


}

values-es 文件夹中的strings.xml

<resources>
    <string name="app_name">Color Activity</string>
    <string name="Color">Color</string>
    <string-array name="myStrings2">
            <item>Selecciona un color</item>
            <item>Plata</item>
            <item>Rosado</item>
            <item>Rojo</item>
            <item>Naranja</item>
            <item>Amarillo</item>
            <item>Verde</item>
            <item>Azul</item>
            <item>Índigo</item>
            <item>Violeta</item>
            <item>Marrón</item>
    </string-array>
</resources>

strings.xml

<resources>
    <string name="app_name">Color Activity</string>
    <string name="Color">Color</string>
    <string-array name="myStrings">
        <item>Select a color</item>
        <item>Silver</item>
        <item>Pink</item>
        <item>Red</item>
        <item>Orange</item>
        <item>Yellow</item>
        <item>Green</item>
        <item>Blue</item>
        <item>Indigo</item>
        <item>Violet</item>
        <item>Brown</item>
    </string-array>
</resources>

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#008577</color>
    <color name="colorPrimaryDark">#00574B</color>
    <color name="colorAccent">#D81B60</color>


    <color name="silver" type="color">#c0c0c0</color>
    <color name="pink" type="color">#ffc0cb</color>
    <color name="red" type="color">#ff0000</color>
    <color name="orange" type="color">#ffa500</color>
    <color name="yellow" type="color">#ffff00</color>
    <color name="green" type="color">#00ff00</color>
    <color name="blue" type="color">#0000ff</color>
    <color name="indigo" type="color">#4b0082</color>
    <color name="violet" type="color">#7f00ff</color>
    <color name="brown" type="color">#654321</color>
    <color name="white" type="color">#FFFFFF</color>
    <integer-array name="myColors">
        <item>@color/white</item>
        <item>@color/silver</item>
        <item>@color/pink</item>
        <item>@color/red</item>
        <item>@color/orange</item>
        <item>@color/yellow</item>
        <item>@color/green</item>
        <item>@color/blue</item>
        <item>@color/indigo</item>
        <item>@color/violet</item>
        <item>@color/brown</item>
    </integer-array>



</resources>

已修复:

通过以下方式解决:

1.将项目模式改为安卓模式

2.右键点击values文件夹

3.将文件命名为字符串

4.选择区域设置作为限定符

5.选择语言

6.点击确定

7.在翻译xml中输入任何内容

它应该将两个strings.xml 文件放在一个strings 文件夹中。与 strings.xml 相比,当 strings.xml (es) 不在单独的文件夹中时,我发现它可以工作

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    改一下

     if(CurrentLang=="es")
    

    给它

     if(CurrentLang.equals("es"))
    

    【讨论】:

    • 您是否重新启动了您的应用程序?注意:您不需要分离出两个变量字符串数组。在“值-es文件夹中的strings.xml”中设置字符串资源的名称,与值文件夹中的相同string.xml。每当您在设置中更改语言时,Android 系统都会自动检测使用哪种语言的设备并使用正确的资源。
    • 这次没有错误,但是当我在系统设置中更改它时,下拉微调器不会将文本从英文更改为西班牙文
    • 我刚刚为 textview 创建了简单的应用程序支持英语和西班牙文,检查一下你就会知道如何更新你的应用程序:github.com/thanhlv93/MultipleLanguageTest
    猜你喜欢
    • 2016-06-25
    • 2015-02-03
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2016-07-01
    • 2016-03-27
    相关资源
    最近更新 更多