【问题标题】:Error: “Method getText() must be called from the UI thread, currently inferred thread is worker.” in Android Studio错误:“必须从 UI 线程调用方法 getText(),当前推断线程是工作线程。”在 Android Studio 中
【发布时间】:2015-11-26 07:19:08
【问题描述】:

我在我的应用程序中添加了一个异步任务,因为它有很多数据要搜索,但我在受保护的 Void doInBackground 中遇到错误,它说必须从 UI 线程调用方法 getText(),当前推断线程是工作线程。我的应用程序由具有 editText 和 Spinner 的对话框组成。请帮助我,并提前感谢。

doctorLocationEditText = (EditText)dialog.findViewById(R.id.doctorlocation);

doctorHospital = (Spinner) dialog.findViewById(R.id.spinnerdoctorhospital);
ArrayAdapter<String> hospitalAdapter = new ArrayAdapter<String>(Doctor.this,R.layout.spinner_layout, db.getAllHospitalName());
hospitalAdapter.setDropDownViewResource(R.layout.spinner_layout);
doctorHospital.setAdapter(hospitalAdapter);

Button button = (Button) dialog.findViewById(R.id.btndoctorsearch);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new DoctorSearch().execute();
        dialog.dismiss();

这是我的异步任务有错误

class DoctorSearch extends AsyncTask<Void, Void, Void> {

        ProgressDialog Asycdialog = new ProgressDialog(Doctor.this);

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Asycdialog.setMessage("Loading...");
            Asycdialog.show();
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            GetSearchDoctor = dbhelper.getDoctorSearch(index2, doctorLocationEditText.getText().toString(), doctorHospital.getSelectedItem().toString());
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            lv3 = (ListView) findViewById(R.id.searchdoctor_list);
            lv3.setAdapter(new ViewAdapterSearchDoctor());
            super.onPostExecute(result);
            Asycdialog.dismiss();
        }
    }

【问题讨论】:

    标签: android multithreading android-studio android-asynctask


    【解决方案1】:

    • 您不应该从后台线程访问 UI 线程。
    • 在 onPreExecute() 或 AsyncTask 构造函数中获取文本并将其传递给 doInBackground。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多