我正在使用 AsyncTask 从网站获取我正在做的一个小型学习项目的信息。我已经尝试了我的代码,它“尝试”做我打算做的事情,尽管我有一个小问题。
我将一个字符串作为参数传递给在 AsyncTask 中执行,但该参数是由地址而不是值引用的。为什么会这样,如何在 UI 线程和后台线程之间正确传递参数?
这是我传递参数的代码:
ibSearch.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Editable artnrInput = input.getText();
String artnr = artnrInput.toString();
new Connection().execute(artnr);
}
});
到目前为止我已经调试过了,参数“artnr”是这里的一个值。
这是发生错误的 AsyncTask 的一部分:
public class Connection extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... artnr) {
String url = "http://mobil.systembolaget.se/SokDryck/SokDryck.aspx?artnr="+ artnr + "&lan=01";
我希望我的字符串 url 看起来像这样: http ://mobil.systembolaget.se/SokDryck/SokDryck.aspx?artnr=221101&lan=01
当我调试它时它会做什么,使它不起作用是这样的:
http://mobil.systembolaget.se/SokDryck/SokDryck.aspx?artnr=[Ljava.lang.String;@43e4c9f8&lan=01
我尝试了一个简单的 toString(),但这更像是一个猜测。为什么它不是作为值传递,而是作为引用传递?
谢谢你,Z