私はAsyncTaskを使用して、私が行っている小さな学習プロジェクトのWebサイトから情報を取得しています。私は自分のコードを試しましたが、小さな問題がありますが、意図したとおりに「試行」します。
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