1

( SignInActivity ) がを実行するActivityメソッドを呼び出しています。FunkcjeAPIAsyncTask

私は呼び出しを使用してAsyncTask表示する必要があります。コンストラクターに正しい値を与える方法がわかりません。私は多くのことを試し、SOに関する多くのチュートリアルと質問を読みましたが、解決策が見つかりません。アクティビティではないので、書き込めませんProgressDialogActivityActivityFunkcjeAPInew Logowanie(this).execute(argumenty);


AsyncTask呼び出しコード:

public class FunkcjeAPI {

    static String dozwrotu = null;

public static String zalogujSie(final String nick, final String haslo)
{
    String[] argumenty = {nick, haslo};
    new Logowanie(/* WHAT HERE ? */).execute(argumenty); // HELP ME IN THAT LINE !!!!!!!!!!!!!
    return dozwrotu;


}

AsyncTaskのクラスコード(クラス内にありますFunkcjeAPI):

private class Logowanie extends AsyncTask<String, Void, String>
    {

        Activity wywolujaceActivity;

        public Logowanie(Activity wywolujaceActivity) {
            this.wywolujaceActivity = wywolujaceActivity;
        }

        @SuppressWarnings("deprecation")
        @Override
        protected void onPreExecute() {
            wywolujaceActivity.showDialog(SignInActivit.PLEASE_WAIT_DIALOG);
        }

        @Override
        protected String doInBackground(final String... argi) {
            final JSONParser jParser = new JSONParser();
            new Thread(new Runnable() {
            public void run() {     
            final String json = jParser.getJSONFromUrl("http://tymonradzik.pl/THUNDER_HUNTER/thapi.php?q=login&username=" + argi[0] + "&password=" + argi[1] + "&imei=");
            Handler mainHandler = new Handler(Looper.getMainLooper());
            mainHandler.post(new Runnable() {

                @Override
                public void run() {
                    JSONObject jObject;
                    try {

                        jObject = new JSONObject(json);
                        Log.wtf("Link", "http://tymonradzik.pl/THUNDER_HUNTER/thapi.php?q=login&username=" + argi[0] + "&password=" + argi[1] + "&imei=");
                        Log.wtf("Link", json);
                        String error = jObject.getString("error");
                        if(error == "You reached daily query limit !") { nadajWartosc("You reached daily query limit !"); }
                        if(error == "0") {nadajWartosc(jObject.getString("token"));}
                        if(error == "1") {nadajWartosc("1");}
                        if(error == "Invalid username") {nadajWartosc("Invalid username");}
                        if(error == "Invalid password") {nadajWartosc("Invalid password");}
                        if(error == "This user is already logged in !") {nadajWartosc("This user is already logged in !");}
                    } catch (JSONException e1) {
                        e1.printStackTrace();
                    }
                    catch (NullPointerException e)
                    {
                        e.printStackTrace();
                    }

                }

            });   
                }}).start();
            return dozwrotu;
        }

        @Override
        protected void onPostExecute(String result) {
            wywolujaceActivity.removeDialog(SignInActivit.PLEASE_WAIT_DIALOG);

        }


    }
4

1 に答える 1

1

zalogujSie()を受け取るメソッドにパラメーターをもう 1 つ追加Activityし、このパラメーターを使用して AsyncTask を開始します。

public static String zalogujSie(Activity activity, final String nick, final String haslo)
{
    // .....
    new Logowanie(activity).execute(argumenty); 
    return dozwrotu;
}

次に、次のようにアクティビティからこのメソッドを呼び出します。

FunkcjeAPI.zalogujSie(this, "Nick", "Haslo"); 
于 2013-07-28T12:39:19.357 に答える