簡體   English   中英

Android-如何獲得通話活動?

[英]Android - How to get calling Activity?

一個Activity (SignInActivity)被調用的方法FunkcjeAPI其中執行AsyncTask

我的AsyncTask應該使用調用Activity來顯示一個ProgressDialog 我不知道如何給構造函數一個正確的Activity 我嘗試了很多事情,閱讀了很多關於SO的教程和問題,但是找不到解決方案。 FunkcjeAPI不是活動,所以我不能寫new 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);

        }


    }

向采用Activity zalogujSie()方法添加一個以上參數,然后使用此參數啟動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"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM