2017-05-02 1 views
1

J'ai une activité dans l'application android et à partir de là j'appelle une méthode d'une classe AsyncTask qui appelle un webservice. Je veux réinitialiser/recharger mon activité sur la base du résultat obtenu avec cette méthode. Comment puis-je réinitialiser mon activité à partir de ce cours?Réinitialiser l'activité Android

+0

Pourquoi voudriez-vous recréer une activité? pourquoi ne pas simplement définir les données provenant du service –

+0

Vous pouvez utiliser 'EventBus' pour mettre à jour le fil d'activité après que' AsyncTask' soit terminé. –

+0

Le service vient de poster des données et renvoie 0/1. Je n'ai pas accès aux contrôles pour définir les données dans cette classe. –

Répondre

2

Vous pouvez essayer ce qui suit

Passe appeler contexte d'activité à votre AsyncTask dans le constructeur et l'enregistrer dans un contexte variable contexte.

Ensuite, dans votre méthode PostExecute de AsyncTask, écrire des lignes suivantes:

 Intent targetIntent = new Intent(context, TargetActivity.class); 
      // Add your data to intent 
     targetIntent.putExtra("intent_extra_key", "intent_extra_value"); 
     context.startActivity(targetIntent); 
     ((Activity) context).finish(); 

revenir pour toute question.

+0

merci ... –

0

Exemple:

Remarque: Supprimer le commentaire et supprimer ou utiliser commentaire pour startActivity (i); dans onPostExecute (Boolean aBoolean) si vous voulez tester l'exemple de code ci-dessous sans le changer.

public class MainActivity extends AppCompatActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    new LoadFromWebAsyncTask(this).execute(); 
} 


private class LoadFromWebAsyncTask extends AsyncTask<Void, Void, Boolean> { 

    MainActivity activity; 

    LoadFromWebAsyncTask(MainActivity activity) { 
     this.activity = activity; 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     return true; 
    } 

    @Override 
    protected void onPostExecute(Boolean aBoolean) { 
     super.onPostExecute(aBoolean); 

     activity.finish(); 
     Intent i = new Intent(MainActivity.this, MainActivity.class); 
     startActivity(i); 

     /* final Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 

       activity.finish(); 
       Intent i = new Intent(MainActivity.this, MainActivity.class); 
       startActivity(i); 
      } 
     }, 5*1000);*/ 

    } 
} 
}