3

最終的には、このメソッドがテキスト ドキュメント内の値を検索し、そこに存在するユーザー名とパスワードの true を返すようにしたいと考えています。ただし、AsyncTask の実装に問題があります。http://developer.android.com/reference/android/os/AsyncTask.htmlのガイドに従おうとしましたが、成功しませんでした。

doInBackground メソッドの戻り値の型で発生するエラーは、「戻り値の型は AsyncTask.doInBackground(String[]) と互換性がありません」です。

    private class AuthenticateUser extends AsyncTask<String, Integer, Boolean>
    {
        String user;
        String pass;

        protected void onPreExecute(String uname, String passwd)
        {
            user = uname;
            pass = passwd;
        }

        protected boolean doInBackground(String... strings)
        {
            return true;
        }

        protected boolean onPostExecute(boolean v)
        {
            return v;
        }
    } 

これがユーザーを認証する良い方法ではないことはわかっています。私はこれを理解しようとしています。ありがとう。

4

2 に答える 2

3

ここでの問題は、AsyncTask 拡張機能が汎用的であり、3 つの型が必要なAsyncTask<Params, Progress, Result>ことです。つまり、Void またはクラスである可能性がありますが、プリミティブ データ型ではありません。

つまり、doInBackground はプリミティブ ブール値を返しますが、クラス ブール値のインスタンスが必要であるとコンパイラに伝えます。したがって、「戻り値の型に互換性がありません」というエラーが表示されます。

に変更protected boolean doInBackground(String... strings)するだけprotected Boolean doInBackground(String... strings)で問題ありません。

于 2013-02-17T11:28:09.020 に答える
0
 new AuthenticateUser().execute(username, password);

.

 private class AuthenticateUser extends AsyncTask<String, Void, Boolean>
    {
        String user;
        String pass;

        protected Boolean doInBackground(String... strings)
        {
            this.user = strings[0];
            this.pass = strings[1];

            //authen
            return true;
        }

        protected void onPostExecute(Boolean result)
        {
             //do stuff when successfully authenticated 
        }
    } 
于 2013-02-17T11:23:57.717 に答える