重置Android活动

时间:2017-05-02 07:53:07

标签: android android-asynctask android-webservice

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

2 个答案:

答案 0 :(得分:2)

您可以尝试以下

将Activity上下文传递给构造函数中的AsyncTask,并将其保存在变量Context上下文中。

然后在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();

恢复任何问题。

答案 1 :(得分:0)

示例:

注意:删除评论并删除或使用startActivity(i)的评论;在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);*/

    }
}
}