Android Can';不要将数组用于开关盒

Android Can';不要将数组用于开关盒,android,arrays,spinner,android-arrayadapter,android-spinner,Android,Arrays,Spinner,Android Arrayadapter,Android Spinner,我在字符串文件(在values文件夹中)中创建了一个数组。 现在我想用它来选择微调器,使用开关盒。 诸如此类: ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,workers); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); public void addUser(View

我在字符串文件(在values文件夹中)中创建了一个数组。 现在我想用它来选择微调器,使用开关盒。 诸如此类:

ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,workers);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);

public void addUser(View view) {

            switch (Arrays.toString(workers)){

                case workers[0]:        //this option isn't compiling
                    Waiter waiter = new Waiter();

                    waiter.setName(editName.getText().toString());
                    waiter.setLast(editLast.getText().toString());
                    waiter.setPass(editPass.getText().toString());

                    name = editName.getText().toString();
                    last = editLast.getText().toString();
                    passId = Integer.parseInt(editPass.getText().toString());
               break;

               case workers[1]:
               break; 
} 
等等

编辑:

现在尝试使用if语句,此方法应在按钮按下时为我添加新的工作人员,但之后当我按下按钮时,什么也不会发生:

public void addUser(View view) {

    if(Arrays.toString(workers).equals(workers[0])) {

        Waiter waiter = new Waiter();

        SQLiteDatabase usersDB = openOrCreateDatabase("USERES_DATABSE.sqlite", MODE_PRIVATE, null);
        usersDB.execSQL("CREATE TABLE IF NOT EXISTS users_table (name TEXT, last TEXT, pass INTEGER)");

        waiter.setName(editName.getText().toString());
        waiter.setLast(editLast.getText().toString());
        waiter.setPass(editPass.getText().toString());

        name = editName.getText().toString();
        last = editLast.getText().toString();
        passId = Integer.parseInt(editPass.getText().toString());


        if (editName.getText().toString().isEmpty() ||
                editLast.getText().toString().isEmpty() ||
                editPass.getText().toString().isEmpty()) {


            AlertDialog alertDialog = new AlertDialog.Builder(UserCreatingActivity.this).create();
            alertDialog.setTitle("Oops,");
            alertDialog.setMessage("You forgot to fill something");
            alertDialog.setButton("OK", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {


                }
            });

            alertDialog.show();


        } else {

            usersDB.execSQL("INSERT INTO users_table VALUES('" + name + "','" + last + "','" + passId + "')");


            AlertDialog alertSucsess = new AlertDialog.Builder(UserCreatingActivity.this).create();
            alertSucsess.setTitle("Congrats,");
            alertSucsess.setMessage(name + " " + last + " Has been created");
            alertSucsess.setButton("OK", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                    startActivity(new Intent(getApplicationContext(), MainActivity.class));

                }
            });

            alertSucsess.show();

        }

        usersDB.close();

//          ADDING SHIFT MANAGER

        } else if (Arrays.toString(workers).equals(workers[1])){

不能在开关中使用变量。换成if


或者您可以更改为案例0:、案例1:、案例2:因为它始终是workers[]

您不能在开关中使用变量。换成if


或者您可以更改为案例0:、案例1:、案例2:因为它始终是workers[]

您不能在开关中使用变量。换成if


或者您可以更改为案例0:、案例1:、案例2:因为它始终是workers[]

您不能在开关中使用变量。换成if


或者您可以更改为案例0:、案例1:、案例2:因为它始终是workers[]

case
表达式必须是常量值


如果预定义了
worker
的可能值,请将这些预定义值和常量值用作
case
表达式

大小写
表达式必须是常量


如果预定义了
worker
的可能值,请将这些预定义值和常量值用作
case
表达式

大小写
表达式必须是常量


如果预定义了
worker
的可能值,请将这些预定义值和常量值用作
case
表达式

大小写
表达式必须是常量

如果预定义了
worker
的可能值,请将这些预定义值和常量值用作
case
表达式

开关使用byte、short、char和int基元数据类型。它还适用于枚举类型(在枚举类型中讨论)、字符串类和一些包装某些基本类型的特殊类:Character、Byte、Short和Integer(在数字和字符串中讨论)

您不能使
案例
s变量。
开关
正常。只需将
大小写
s更改为常量即可

如果这是不可行的,那么您必须按照Alex的建议去做,并求助于
If
语句,这在许多情况下会导致代码行数减少

比如说

我认为您的逻辑中存在错误,但是如果没有更多的代码,就不能更具体

开关使用byte、short、char和int基元数据类型。它还适用于枚举类型(在枚举类型中讨论)、字符串类和一些包装某些基本类型的特殊类:Character、Byte、Short和Integer(在数字和字符串中讨论)

您不能使
案例
s变量。
开关
正常。只需将
大小写
s更改为常量即可

如果这是不可行的,那么您必须按照Alex的建议去做,并求助于
If
语句,这在许多情况下会导致代码行数减少

比如说

我认为您的逻辑中存在错误,但是如果没有更多的代码,就不能更具体

开关使用byte、short、char和int基元数据类型。它还适用于枚举类型(在枚举类型中讨论)、字符串类和一些包装某些基本类型的特殊类:Character、Byte、Short和Integer(在数字和字符串中讨论)

您不能使
案例
s变量。
开关
正常。只需将
大小写
s更改为常量即可

如果这是不可行的,那么您必须按照Alex的建议去做,并求助于
If
语句,这在许多情况下会导致代码行数减少

比如说

我认为您的逻辑中存在错误,但是如果没有更多的代码,就不能更具体

开关使用byte、short、char和int基元数据类型。它还适用于枚举类型(在枚举类型中讨论)、字符串类和一些包装某些基本类型的特殊类:Character、Byte、Short和Integer(在数字和字符串中讨论)

您不能使
案例
s变量。
开关
正常。只需将
大小写
s更改为常量即可

如果这是不可行的,那么您必须按照Alex的建议去做,并求助于
If
语句,这在许多情况下会导致代码行数减少

比如说


我认为您的逻辑中存在错误,但如果没有更多的代码,就无法更具体。

正如大家提到的,您无法将数组与交换机一起使用,因此您将使用if。您编写条件的方式似乎不正确
if(Arrays.toString(workers).equals(workers[0])
。在完成问题之后,根据微调器中的选择,您必须添加用户…如果我错了,请更正我。因此,首先需要找到微调器的值。
解决方案1
创建一个实例字符串变量,并实现如下所示的onItemSelected

String workerSelected;

//your code
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            workerSelected=worker[position]

        }

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

        }
    });
然后在addUser方法中,您可以将if条件作为

if(workerSelected.equals(worker[0])){
 //your code
}else if(workerSelected.equals(worker[1])){
 //your code
}
解决方案2
直接在addUser方法内部


正如大家提到的那样,无法将数组与交换机一起使用,因此您将使用if。您编写条件的方式似乎不正确
if(Arrays.toString(workers).equals(workers[0])
。在完成问题之后,根据微调器中的选择,您必须添加用户…如果我错了,请更正我。因此,首先需要找到微调器的值。
解决方案1
创建一个实例字符串变量,并实现如下所示的onItemSelected

String workerSelected;

//your code
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            workerSelected=worker[position]

        }

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

        }
    });
然后在addUser方法中,您可以将if条件作为

if(workerSelected.equals(worker[0])){
 //your code
}else if(workerSelected.equals(worker[1])){
 //your code
}
解决方案2
直接在addUser方法内部


正如大家提到的,不能将数组用于
String workerSelected = spinner.getSelectedItem().toString();
if(workerSelected.equals(worker[0])){
     //your code
    }else if(workerSelected.equals(worker[1])){
     //your code
    }