我正在使用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(),但它更多的是一個猜測。爲什麼它不是作爲一個價值傳遞的,而是一個參考?
謝謝 ž
字符串的基準是按值傳遞。 Java中根本不傳遞對象,更不用說通過值或引用。 – EJP