0

静的関数からdoInBackgroundAsycTaskを実行しようとしていますが、Voidのパラメーターを入力しようとすると、「Void」がタスク「String、Void、Boolean」に適用できないというJavaエラーが発生します。

とにかく、これが私のコードです:

public class RequestHandler extends AsyncTask<URL, Void, Boolean> {

    //atributes for Async
    private static Context context;
    private RequestHandler origin;

 // Constructor
    public RequestHandler(Context c) {

        origin = this;
        context = c;

    }

   public static boolean doLogin(String username, String password) {
       String URL = "http://127.0.0.1:1337";
new RequestHandler(context).execute(URL, Void, false); // what do I put here?  
   }


    @Override
    protected Boolean doInBackground(URL... params) {
        // TODO Auto-generated method stub
        URL url = null;
        try {
           HttpURLConnection urlConnection = null;
        try {
            urlConnection = (HttpURLConnection) url.openConnection();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
           try {
             InputStream in = null;
            try {
                in = new BufferedInputStream(urlConnection.getInputStream());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
             readStream(in);
           } finally {

           }
        return false;

           }
            private String readStream(InputStream is) {
                try {
                  ByteArrayOutputStream bo = new ByteArrayOutputStream();
                  int i = is.read();
                  while(i != -1) {
                    bo.write(i);
                    i = is.read();
                  }
                  return bo.toString();
                } catch (IOException e) {
                  return "";
                }
            }
}
4

2 に答える 2

1
  1. 'doLogin メソッドを AsyncTask クラスの外に置く
  2. new RequestHandler(context).execute(URL);
  3. protected Boolean doInBackground(String... params) {....}
于 2012-07-24T14:46:57.547 に答える
0

doLogin メソッドで RequestHandler を呼び出す場所で、Void をオブジェクトとして使用しようとしていますが、それはタイプです。その行を次のように変更してみてください。

new RequestHandler(context).execute(URL, null, false);

代わりに AsyncTask が null を返すようにします。

于 2012-07-24T14:55:06.810 に答える