Java 使用开关大小写和字符串基于第一个微调器更改第二个微调器的值

Java 使用开关大小写和字符串基于第一个微调器更改第二个微调器的值,java,android,xml,Java,Android,Xml,更新:我最终自己解决了这个问题,不过答案很有用,帮助我解决了这个问题。请参阅end以了解更新的Java 我知道这个问题已经被问过好几次了,但是解决方案对我不起作用,我也不知道为什么。。还有很多人提到JSON,我使用的是字符串数组 基本上我有两个微调器,我想根据选择的动物类型(第一种)显示特定的品种(第二种)。例如,当选择“狗”时,我希望它显示狗品种的字符串数组 我想试着用一个开关箱来做这件事,因为它对我来说似乎是最合乎逻辑的,而且我更了解它,尽管我对如何改进持开放态度 以下是我的情况-我在@Ov

更新:我最终自己解决了这个问题,不过答案很有用,帮助我解决了这个问题。请参阅end以了解更新的Java

我知道这个问题已经被问过好几次了,但是解决方案对我不起作用,我也不知道为什么。。还有很多人提到JSON,我使用的是字符串数组

基本上我有两个微调器,我想根据选择的动物类型(第一种)显示特定的品种(第二种)。例如,当选择“狗”时,我希望它显示狗品种的字符串数组

我想试着用一个开关箱来做这件事,因为它对我来说似乎是最合乎逻辑的,而且我更了解它,尽管我对如何改进持开放态度

以下是我的情况-我在@Override上遇到了一个错误,错误日志对我没有多大帮助(Java新手):

XML


<string-array name="pet_type">
    <item>Dog</item>
    <item>Cat</item>
    <item>Rabbit</item>
    <item>Hamster</item>
    <item>Bird</item>
</string-array>

<string-array name="dog_breeds">
    <item>Alsatian</item>
    <item>Border Collie</item>
    <item>Labrador</item>
</string-array>

<string-array name="cat_breeds">
    <item>Persian</item>
    <item>Hairless</item>
    <item>Tomcat</item>
</string-array>

狗
猫
兔子
仓鼠
鸟
阿尔萨斯人
边境牧羊犬
拉布拉多
波斯人
无毛的
雄猫
Java(工作代码见下文)

公共课堂问卷调查活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.问卷);
微调器类型微调器=(微调器)findViewById(R.id.which\u微调器);
Spinner breedSpinner=(Spinner)findViewById(R.id.breed\U Spinner);
//~~~使用字符串数组和默认微调器布局创建ArrayAdapter
ArrayAdapter typeAdapter=ArrayAdapter.createFromResource(此,
R.array.pet_type,android.R.layout.simple_微调器_项);
ArrayAdapter dogBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.dog_breeds,android.R.layout.simple_spinner_item);
ArrayAdapter catBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.cat_breeds,android.R.layout.simple_spinner_item);
ArrayAdapter rabbitBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.rabbit\u breeds,android.R.layout.simple\u spinner\u item);
ArrayAdapter-hamsterBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.仓鼠品种,android.R.layout.simple\u微调器\u项目);
ArrayAdapter birdBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.bird_breeds,android.R.layout.simple_spinner_item);
//~~~指定显示选项列表时要使用的布局
typeAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
dogbreedapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
catBreedAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
rabbitBreedAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
birdBreedAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//~~~将适配器应用于微调器
typeSpinner.setAdapter(typeAdapter);
//breedSpinner.setEnabled(真);
typeSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
已选择公共视图(AdapterView父视图、视图selectedItemView、整型位置、长id){
if(typeSpinner.getSelectedItem().equals(“Dogs”)){
breedSpinner.setAdapter(dogBreedAdapter);
}else if(typeSpinner.getSelectedItem().equals(“Cats”)){
breedSpinner.setAdapter(catBreedAdapter);
}else if(typeSpinner.getSelectedItem().equals(“兔子”)){
breedSpinner.setAdapter(rabbitBreedAdapter);
}
}
未选择公共无效(AdapterView arg0){
}
});
}
}
工作Java代码:

public class Questionnaire extends AppCompatActivity {

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

       String[] dogBreeds = {"Alsatian", "Border Collie","Labrador"};
       String[] catBreeds = {"Bombay", "British Shorthair","Persian"};
       String[] rabbitBreeds = {"Dutch", "English Lop","Flemish"};
       String[] hamsterBreeds = {"Chinese", "Russian","Syrian"};
       String[] birdBreeds = {"Parrot", "Parakeet","Cockatiel"};

        Spinner typeSpinner = (Spinner) findViewById(R.id.which_spinner);
        Spinner breedSpinner = (Spinner) findViewById(R.id.breed_spinner);

// ~~~ create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> typeAdapter = ArrayAdapter.createFromResource(this,
                R.array.pet_type, android.R.layout.simple_spinner_item);
        ArrayAdapter<CharSequence> dogBreedAdapter = new ArrayAdapter<CharSequence>(this,
               android.R.layout.simple_spinner_item, dogBreeds);
        ArrayAdapter<CharSequence> catBreedAdapter = new ArrayAdapter<CharSequence>(this,
               android.R.layout.simple_spinner_item, catBreeds);
        ArrayAdapter<CharSequence> rabbitBreedAdapter = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item, rabbitBreeds);
        ArrayAdapter<CharSequence> hamsterBreedAdapter = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item, hamsterBreeds);
        ArrayAdapter<CharSequence> birdBreedAdapter = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item, birdBreeds);

// ~~~ specify the layout to use when the list of choices appears
         typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         
// ~~~ apply the adapter to the spinner
        typeSpinner.setAdapter(typeAdapter);

        typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {

                switch (typeSpinner.getSelectedItem().toString()) {
                    case "Dog":
                        dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(dogBreedAdapter);
                        break;

                    case "Cat":
                        catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(catBreedAdapter);
                        break;

                    case "Rabbit":
                        rabbitBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(rabbitBreedAdapter);
                        break;

                    case "Hamster":
                        hamsterBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(hamsterBreedAdapter);
                        break;

                    case "Bird":
                        birdBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(birdBreedAdapter);
                        break;

                    default:
                        breedSpinner.setEnabled(false);
                        break;
                }

            }

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

            }
        });
        }


}
公共课堂问卷调查活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.问卷);
String[]dogbrides={“阿尔萨斯”、“边境牧羊犬”、“拉布拉多犬”};
字符串[]猫品种={“孟买”,“英国短毛”,“波斯”};
字符串[]兔子品种={“荷兰语”、“英语罗布语”、“佛兰芒语”};
字符串[]仓鼠草={“中文”、“俄文”、“叙利亚文”};
字符串[]鸟苇={“鹦鹉”、“长尾鹦鹉”、“鹦鹉”};
微调器类型微调器=(微调器)findViewById(R.id.which\u微调器);
Spinner breedSpinner=(Spinner)findViewById(R.id.breed\U Spinner);
//~~~使用字符串数组和默认微调器布局创建ArrayAdapter
ArrayAdapter typeAdapter=ArrayAdapter.createFromResource(此,
R.array.pet_type,android.R.layout.simple_微调器_项);
ArrayAdapter dogBreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项目,狗品种);
ArrayAdapter catBreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_spinner_项目,猫品种);
ArrayAdapter rabbitBreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项目,兔子品种);
ArrayAdapter仓鼠BreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_spinner_项目,仓鼠草);
ArrayAdapter birdBreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项目,鸟簧片);
//~~~指定显示选项列表时要使用的布局
typeAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//~~~将适配器应用于微调器
typeSpinner.setAdapter(typeAdapter);
typeSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
酒吧
public class Questionnaire extends AppCompatActivity {

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

        Spinner typeSpinner = (Spinner) findViewById(R.id.which_spinner);
        Spinner breedSpinner = (Spinner) findViewById(R.id.breed_spinner);

// ~~~ create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> typeAdapter = ArrayAdapter.createFromResource(this,
                R.array.pet_type, android.R.layout.simple_spinner_item);
        ArrayAdapter<CharSequence> dogBreedAdapter = ArrayAdapter.createFromResource(this,
                R.array.dog_breeds, android.R.layout.simple_spinner_item);
        ArrayAdapter<CharSequence> catBreedAdapter = ArrayAdapter.createFromResource(this,
                R.array.cat_breeds, android.R.layout.simple_spinner_item);
        ArrayAdapter<CharSequence> rabbitBreedAdapter = ArrayAdapter.createFromResource(this,
                R.array.rabbit_breeds, android.R.layout.simple_spinner_item);
        ArrayAdapter<CharSequence> hamsterBreedAdapter = ArrayAdapter.createFromResource(this,
                R.array.hamster_breeds, android.R.layout.simple_spinner_item);
        ArrayAdapter<CharSequence> birdBreedAdapter = ArrayAdapter.createFromResource(this,
                R.array.bird_breeds, android.R.layout.simple_spinner_item);

// ~~~ specify the layout to use when the list of choices appears
        typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        rabbitBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        hamsterBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        birdBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// ~~~ apply the adapter to the spinner
        typeSpinner.setAdapter(typeAdapter);
       // breedSpinner.setEnabled(true);

        typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {

            if(typeSpinner.getSelectedItem().equals("Dogs")) {
                breedSpinner.setAdapter(dogBreedAdapter);
            } else if(typeSpinner.getSelectedItem().equals("Cats")) {
                breedSpinner.setAdapter(catBreedAdapter);
            } else if(typeSpinner.getSelectedItem().equals("Rabbits")) {
                breedSpinner.setAdapter(rabbitBreedAdapter);
            }

            }

            public void onNothingSelected(AdapterView<?> arg0) {

            }

        });
        }


}
public class Questionnaire extends AppCompatActivity {

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

       String[] dogBreeds = {"Alsatian", "Border Collie","Labrador"};
       String[] catBreeds = {"Bombay", "British Shorthair","Persian"};
       String[] rabbitBreeds = {"Dutch", "English Lop","Flemish"};
       String[] hamsterBreeds = {"Chinese", "Russian","Syrian"};
       String[] birdBreeds = {"Parrot", "Parakeet","Cockatiel"};

        Spinner typeSpinner = (Spinner) findViewById(R.id.which_spinner);
        Spinner breedSpinner = (Spinner) findViewById(R.id.breed_spinner);

// ~~~ create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> typeAdapter = ArrayAdapter.createFromResource(this,
                R.array.pet_type, android.R.layout.simple_spinner_item);
        ArrayAdapter<CharSequence> dogBreedAdapter = new ArrayAdapter<CharSequence>(this,
               android.R.layout.simple_spinner_item, dogBreeds);
        ArrayAdapter<CharSequence> catBreedAdapter = new ArrayAdapter<CharSequence>(this,
               android.R.layout.simple_spinner_item, catBreeds);
        ArrayAdapter<CharSequence> rabbitBreedAdapter = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item, rabbitBreeds);
        ArrayAdapter<CharSequence> hamsterBreedAdapter = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item, hamsterBreeds);
        ArrayAdapter<CharSequence> birdBreedAdapter = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item, birdBreeds);

// ~~~ specify the layout to use when the list of choices appears
         typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         
// ~~~ apply the adapter to the spinner
        typeSpinner.setAdapter(typeAdapter);

        typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {

                switch (typeSpinner.getSelectedItem().toString()) {
                    case "Dog":
                        dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(dogBreedAdapter);
                        break;

                    case "Cat":
                        catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(catBreedAdapter);
                        break;

                    case "Rabbit":
                        rabbitBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(rabbitBreedAdapter);
                        break;

                    case "Hamster":
                        hamsterBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(hamsterBreedAdapter);
                        break;

                    case "Bird":
                        birdBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(birdBreedAdapter);
                        break;

                    default:
                        breedSpinner.setEnabled(false);
                        break;
                }

            }

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

            }
        });
        }


}
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
  if(arg0.equals(spin0)){
    spin1.setEnabled(true);
    if(spin0.getSelectedItem().equals("India")){
      ArrayAdapter<String> s1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,states_india);
      s1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      spin1.setAdapter(s1);
    } 
    else if(spin0.getSelectedItem().equals("Pakistan")) {
      ArrayAdapter <String> s2 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_pak);
      s2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      spin1.setAdapter(s2);
    }
    else if(spin0.getSelectedItem().equals("China")) {
      ArrayAdapter <String> s3 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_china);
      s3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      spin1.setAdapter(s3);
    }
  }
}
String[] typeList = {"Dogs", "Rabbits","Cats"};
final Spinner typeSpinner = (Spinner) findViewById(R.id.which_spinner);
        final Spinner breedSpinner = (Spinner) findViewById(R.id.breed_spinner);

ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, typeList);
        typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        typeSpinner.setAdapter(typeAdapter);
typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {

                    breedSpinner.setEnabled(true);

                    if (typeSpinner.getSelectedItem().toString().equals("Dogs"))
                    {
                        ArrayAdapter<CharSequence> dogBreedAdapter = ArrayAdapter.createFromResource(MainActivity.this,
                                                                                                     R.array.dog_breeds, android.R.layout.simple_spinner_item);
                        dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(dogBreedAdapter);
                        
                    } else  if (typeSpinner.getSelectedItem().toString().equals("Cats"))
                    {
                        ArrayAdapter<CharSequence> catBreedAdapter = ArrayAdapter.createFromResource(MainActivity.this,
                                                                                                     R.array.cat_breeds, android.R.layout.simple_spinner_item);
                        catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        breedSpinner.setAdapter(catBreedAdapter);
                        
                    } else  if (typeSpinner.getSelectedItem().equals("Rabbits"))
                    {
                        breedSpinner.setEnabled(false);

                    }
                }

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

                }
            });
switch (typeSpinner.getSelectedItem().toString()) {
                        case "Dogs":
                            ArrayAdapter<CharSequence> dogBreedAdapter = ArrayAdapter.createFromResource(MainActivity.this,
                                                                                                         R.array.dog_breeds, android.R.layout.simple_spinner_item);
                            dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                            breedSpinner.setAdapter(dogBreedAdapter);
                            break;
                            
                        case "Cats":
                            ArrayAdapter<CharSequence> catBreedAdapter = ArrayAdapter.createFromResource(MainActivity.this,
                                                                                                         R.array.cat_breeds, android.R.layout.simple_spinner_item);
                            catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                            breedSpinner.setAdapter(catBreedAdapter);
                            
                            break;
                            
                        case "Rabbits":
                            breedSpinner.setEnabled(false);
                            break;
                    }