Autore Topic: AsyncThred e Activity dinamica  (Letto 492 volte)

Offline auron86

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +1
    • Mostra profilo
AsyncThred e Activity dinamica
« il: 21 Ottobre 2013, 14:57:13 CEST »
0
Codice (Java): [Seleziona]
public class JsonUserLogin extends AsyncTask<String, String, String> {

        private Splashscreen activity;
        private String id, nome, cognome, url;
        int success;

        public JsonUserLogin(Splashscreen activity, String url) {
                this.url = url;
                this.activity = activity;
        }

        // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        @Override
        protected void onPreExecute() {
                super.onPreExecute();
        }

        // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        @Override
        protected String doInBackground(String... strings) {
                try {
                        connect();
                } catch (JSONException e) {
                        e.printStackTrace();
                }
                return "Json Working";
        }

        // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


       @Override
        protected void onPostExecute(String result) {
                super.onPostExecute(result);
                activity.alertError("Login");
        }

}

Nell' activity  Splashscreen alertError() è:

Codice (Java): [Seleziona]
public void alertError(String errore) {
                alert = new AlertDialog.Builder(this).setTitle(Html.fromHtml("<font color='#00A2DA'><b>" + "Errore" + "</b></font>")).setMessage(Html.fromHtml("<font color='#00A2DA'><b>" + errore + "</b></font>"))
                                .setPositiveButton(Html.fromHtml("<font color='#00A2DA'><b>" + "OK" + "</b></font>"), new DialogInterface.OnClickListener() {

                                        public void onClick(DialogInterface dialog, int which) {
                                                Intent intent = new Intent(Splashscreen.this, Main.class);
                                                startActivity(intent);
                                                finish();
                                        }
                                }).show();
        }

ammettendo di avere la stessa alertError() in un ulteriore activity "MAIN", e dover eseguire un ulteriore AsyncTask (JsonUselLogin)

in tutto è per tutto uguale ap precedente, come faccio a passare all' AsyncTask l'activity corrente, e non una predefinita "come faccio ora "  ????????



thx a tutti


Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:AsyncThred e Activity dinamica
« Risposta #1 il: 21 Ottobre 2013, 17:51:13 CEST »
0
ammettendo di avere la stessa alertError() in un ulteriore activity "MAIN", e dover eseguire un ulteriore AsyncTask (JsonUselLogin)

in tutto è per tutto uguale ap precedente, come faccio a passare all' AsyncTask l'activity corrente, e non una predefinita "come faccio ora "  ????????

Ammetto di non averci capito un'H di quel che scrivi...

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 90
  • Respect: +6
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
Re:AsyncThred e Activity dinamica
« Risposta #2 il: 27 Ottobre 2013, 19:06:16 CET »
0
Io a volte faccio cosi.

Codice (Java): [Seleziona]
//file di Interface
public interface TaskListener {

       
        public void action();
       
       
}

Codice (Java): [Seleziona]
//codice nell' Activity, passo il Listener come parametro
login_task = new LoginTask(getApplicationContext(), new TaskListener() {

                        @Override
                        public void action() {

                               
                        }

                       
                },

                url);

                login_task.execute();

Codice (Java): [Seleziona]
//AsyncTask metto solo quello che ti interessa

  public LoginTask(Context context, TaskListener listener, String url) {
                this.url = url;
                this.context = activity;
this.listener= listener;
        }
.
.
.
.
 protected void onPostExecute(String result) {
                super.onPostExecute(result);
               listener.action();
        }

Ovvio che puoi creare un' Interface con più metodi e paramentri, oppure per esempio puoi creare il listener come proprietà privata invece di fare come ho fatto io.
In questo modo hai un AsyncTask generico...
The code is joy and passion but it has a high degree of suffering