有人可以帮我解决这个问题吗?我正在尝试使用下面的代码将数据从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)
答案 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);