2017-05-02 54 views
1

我在android应用程序中有一个活动,并从中调用AsyncTask类的方法调用webservice。我想根据从该方法得到的结果重置/重新加载我的活动。我该如何重新设定该课程的活动?重置Android活动

+0

为什么要重新创建活动?为什么不简单地设置数据来自服务 –

+0

在'AsyncTask'完成之后,您可以使用'EventBus'来更新活动线程。 –

+0

服务只是发布数据并返回0/1。我没有访问控件来设置该类中的数据。 –

回答

2

你可以尝试以下

通行证调用活动上下文中构造你的AsyncTask并将其保存在一个变量上下文的背景下。

中的AsyncTask您PostExecute方法

然后,写下面几行:

 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(); 

回复任何问题。

+0

谢谢它的作品... –

0

实施例:

注:删除注释和删除或使用注释为startActivity(ⅰ);在onPostExecute(Boolean aBoolean)中,如果你想测试下面的代码示例而不改变它。

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);*/ 

    } 
} 
}