我收到一个错误,因为在实施 Material Spinner 时发现了错误的参数

i am getting a error as wrong argument found for implementing material spinner

我收到一个错误,错误的第二个参数类型。找到:'com.jaredrummler.materialspinner.MaterialSpinner',要求:'java.lang.String' 级别字符串

protected Map<String, String> getParams() {

  // Posting params to register url
                Map<String, String> params = new HashMap<String, String>();
                params.put("name", name);
                params.put("email", email);
                params.put("phone",phone);
                params.put("level", level);

                return params;
            }

我无法找出错误脚本的位置

public class ActivityProfile extends AppCompatActivity {
    private static final String TAG = ActivityProfile.class.getSimpleName();
    private SQLiteHandler db;
    private SessionManager session;
    private EditText editname,editemail,editphone;
    private Toolbar toolbar;
    private Button next;
    private MaterialSpinner level;

    private static final String[] LEVEL = {
            "UnderGraduate" ,"Graduate"
    };

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

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        toolbar = (Toolbar) findViewById(R.id.toolbar);


        editname =(EditText) findViewById(R.id.name);
        editemail =(EditText) findViewById(R.id.email);
        editphone = (EditText) findViewById(R.id.phone);
        level =(MaterialSpinner) findViewById(R.id.level);
        next = (Button) findViewById(R.id.next);
        db = new SQLiteHandler(getApplicationContext());
        session = new SessionManager(getApplicationContext());

        // Fetching user details from sqlite
        HashMap<String, String> user = db.getUserDetails();

        String name = user.get("name");
        String email =user.get("email");
        String phone = user.get("phone");
        // Displaying the user details on the screen
        editname.setText(name);
        editemail.setText(email);
        editphone.setText(phone);


        final MaterialSpinner level = (MaterialSpinner) findViewById(R.id.level);
        level.setItems(LEVEL);
        level.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() {

            @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
                Snackbar.make(view, "Clicked " + item, Snackbar.LENGTH_LONG).show();
            }
        });
        level.setOnNothingSelectedListener(new MaterialSpinner.OnNothingSelectedListener() {

            @Override public void onNothingSelected(MaterialSpinner spinner) {
                Snackbar.make(spinner, "Nothing selected", Snackbar.LENGTH_LONG).show();
            }
        });


        next.setOnClickListener(new View.OnClickListener(){

            public void onClick(View view) {
                String name = editname.getText().toString();
                String email = editemail.getText().toString();
                String phone = editphone.getText().toString();

                createprofile(name, email,phone,level);



        }


    });

}

    private void createprofile(final String name, final String email,
                              final String phone,final MaterialSpinner level) {

        StringRequest strReq = new StringRequest(Request.Method.POST,
                AppConfig.URL_CREATEPROF1, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, "Profile Response: " + response.toString());


                try {
                    JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");
                    if (!error) {



                        Toast.makeText(getApplicationContext(), "User successfully registered.", Toast.LENGTH_LONG).show();

                        // Launch login activity
                        Intent intent = new Intent(
                                ActivityProfile.this,
                                VerifyOtp.class);
                        startActivity(intent);
                        finish();
                    } else {

                        // Error occurred in registration. Get the error
                        // message
                        String errorMsg = jObj.getString("error_msg");
                        Toast.makeText(getApplicationContext(),
                                errorMsg, Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Registration Error: " + error.getMessage());
                Toast.makeText(getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_LONG).show();

            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                // Posting params to register url
                Map<String, String> params = new HashMap<String, String>();
                params.put("name", name);
                params.put("email", email);
                params.put("phone",phone);
                params.put("level", level);

                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strReq);
    }


}

请帮我纠正错误

这是因为您试图在地图中放置不同于 String 的另一个值。

你有一张地图:

Map<String, String> params = new HashMap<String, String>();

String 个值(参见 <String, String> 中的第二个 String 词),但是 levelMaterialSpinner 的一个实例,所以下面线路失败:

params.put("level", level);

MaterialSpinner中定义一个toString方法并使用:

params.put("level", level.toString());

相反。

或者,您可以尝试从 level 中获取 String 值(例如:level.getName() - 而不是 level.toString()),或者(如果您确实需要存储该对象)您需要将地图更改为:

Map<String, Object> params = new HashMap<String, Object>();

如果用JDK7或8,也可以简化为:

Map<String, Object> params = new HashMap<>();