如何解决找不到合适的put方法(String,long)

时间:2015-12-29 07:33:34

标签: java android string long-integer

有人可以帮我解决这个问题吗?我正在尝试使用下面的代码将数据从android发送到MySQL,但我得到error long cannot converted to String。我可以找到与no suitable method found .put(String)相关的大量解决方案,但不是我的情况,所以我决定从这里寻求帮助。任何帮助将不胜感激。

 public void addWorkForce(final String subcontractors, final String noPeople, final String noHours,final long twf)
    {
        class AddWorkForce extends AsyncTask<String, Void, String> {
            ProgressDialog loading;

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                loading = ProgressDialog.show(WorkDetailsTable.this, "Please Wait",null, true, true);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                loading.dismiss();
                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
            }

            @Override
            protected String doInBackground(String... params) {

                HashMap<String, String> data = new HashMap<String,String>();
                data.put(Config.KEY_SUBCONTRACTORS,subcontractors);
                data.put(Config.KEY_NUMBERPERSONS,noPeople);
                data.put(Config.KEY_NUMBERHOURS,noHours);
                data.put(Config.KEY_TWF,twf);
                RequestHandler rh=new RequestHandler();
                String result = rh.sendPostRequest(Config.ADD_WORKFORCE,data);
                return  result;
            }
        }

        AddWorkForce ru = new AddWorkForce();
        ru.execute(subcontractors,noPeople,noHours,twf);
    }

错误

Error:(281, 21) error: no suitable method found for put(String,long)
method AbstractMap.put(String,String) is not applicable
(argument mismatch; long cannot be converted to String)
method HashMap.put(String,String) is not applicable
(argument mismatch; long cannot be converted to String)

3 个答案:

答案 0 :(得分:1)

使用

data.put(Config.KEY_TWF,String.valueOf(twf));

答案 1 :(得分:1)

通过传递正确类型的参数。你的类只有两个字符串作为参数的方法,而你尝试用String和long调用它。

要么改变原始类型中的方法,要么花一点时间(这是一个坏主意,因为你可能会破坏其他代码。

或者,添加一个新方法,该方法将String和long作为参数。

或者:这样称呼:

而不是

long l = 2L;
callMethod("String", l);

这样做

callMethod("String", String.valueOf(l));

答案 2 :(得分:1)

HashMap<String, String>表示等待String密钥和String值。您可以使用以下方法将HashMap更改为<String, Long>或将long值转换为String

String.valueOf(long);