重置 Android Activity

Reset Android Activity

我在 android 应用程序中有一个 activity,我正在从中调用 AsyncTask class 的方法,该方法正在调用 Web 服务。我想根据从该方法获得的结果 reset/reload 我的 activity 。我怎样才能从 class 重置我的 activity?

您可以尝试以下方法

将调用 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();

返回任何问题。

示例:

注意:去掉注释,对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);*/

    }
}
}