【问题标题】:How to pass application context from main activity to a class that implements async task to attach adapter from onPostExecute() in async task?如何将应用程序上下文从主活动传递给实现异步任务的类,以在异步任务中从 onPostExecute() 附加适配器?
【发布时间】:2020-03-31 07:20:40
【问题描述】:

主要活动 @Override

    protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            mContext = getApplicationContext();


            recyclerView = findViewById(R.id.recyclerview_student);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));

            buttonAddTask = findViewById(R.id.Fbutton_add);
            buttonAddTask.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
               Intent intent = new Intent(MainActivity.this, addStudent.class);
               startActivity(intent);
        }
    });

        final getStudents getstudents = new getStudents(getApplicationContext());
                getstudents.execute();
}

标题

异步任务:

     public class getStudents extends AsyncTask<Void, Void, List<Student>>
     {
             private Context mContext;
             public  getStudents(Context context)
             {
                    mContext=context;
             }

     @Override
     protected List<Student> doInBackground(Void... voids) 
     {
             List<Student> studentList= 
             DatabaseClient.getInstance(mContext.getApplicationContext().);

              return  studentList;

我想将应用程序上下文从主活动传递到实现异步任务的不同 java 类文件。这样做是为了在异步任务中移除从 onPostExecute() 附加的适配器,因为这样做会在创建 apk 时创建。我该怎么办 ??

【问题讨论】:

  • 您已经在传递一个上下文。剩下的问题是什么?你的 onPostExecute() 是什么样子的?

标签: java android android-room


【解决方案1】:

在构造函数中传递它,而不是作为方法参数。那么你就不需要依赖泛型参数了。

在将 Context 对象传递到 AsyncTask 的构造函数之后,就像您已经完成的那样 然后,当您构建 AsyncTask:

getStudents stud= new getStudents (this);
stud.execute(...);

另一个建议是将您的 AsyncTask 类作为私有内部类添加到您的活动中 - 这样我很确定您将可以访问 getApplicationContext()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    相关资源
    最近更新 更多