java – Android Studio错误:“必须从UI线程调用方法getText(),当前推断的线程是worker

java – Android Studio错误:“必须从UI线程调用方法getText(),当前推断的线程是worker,第1张

概述我正在 android studio中创建一个CRUD *** 作,但我不断收到错误.错误是当我检查LogCat这是他们告诉我的 line 156-158 1907-1931/com.example.casquejo.loginadmin E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2 Process: com.example.casquejo.logina 我正在 android studio中创建一个CRUD *** 作,但我不断收到错误.错误是当我检查LogCat这是他们告诉我的

line 156-158
1907-1931/com.example.casquejo.loginadmin E/AndroidRuntime﹕ FATAL
EXCEPTION: AsyncTask #2
Process: com.example.casquejo.loginadmin,PID: 1907
java.lang.RuntimeException: An error occured while executing
doInBackground()
Caused by: java.lang.NullPointerException atcom.example.casquejo.loginadmin.NewProductActivity$CreateNewProduct.doInBackground(NewProductActivity.java:85)
at com.example.casquejo.loginadmin.NewProductActivity$CreateNewProduct.doInBackground(NewProductActivity.java:58)
atcom.example.casquejo.loginadmin.NewProductActivity$CreateNewProduct.onPreExecute(NewProductActivity.java:67)
atcom.example.casquejo.loginadmin.NewProductActivity$1.onClick(NewProductActivity.java:53)

有人可以帮我这个或者有人可以提出一个想法如何解决这个问题下面是我的java类EditProductActivity.class的代码

package com.example.casquejo.loginadmin;        import java.util.ArrayList;        import java.util.List;        import org.apache.http.nameValuePair;        import org.apache.http.message.BasicnameValuePair;        import org.Json.JsONException;        import org.Json.JsONObject;        import androID.app.Activity;        import androID.app.ProgressDialog;        import androID.content.Intent;        import androID.os.AsyncTask;        import androID.os.Bundle;        import androID.util.Log;        import androID.vIEw.VIEw;        import androID.Widget.button;        import androID.Widget.EditText;        /**        * Created by Casquejo on 9/14/2015.        */        public class NewProductActivity extends Activity {    private ProgressDialog pDialog;    JsONParser JsonParser = new JsONParser();    EditText inputname;    EditText inputPrice;    EditText inputDesc;    private static String url_create_product = "http://10.0.2.2/androID_connect/create_product.PHP";    private static final String TAG_SUCCESS = "success";    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.add_product);        inputname = (EditText) findVIEwByID(R.ID.inputname);        inputPrice = (EditText) findVIEwByID(R.ID.inputPrice);        inputDesc = (EditText) findVIEwByID(R.ID.inputDesc);        button btnCreateProduct = (button) findVIEwByID(R.ID.btnCreateProduct);        btnCreateProduct.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                String name = inputname.getText().toString();                String price = inputPrice.getText().toString();                String description = inputDesc.getText().toString();                new CreateNewProduct().execute(name,price,description);            }        });    }    class CreateNewProduct extends AsyncTask<String,String,String> {        @OverrIDe        protected voID onPreExecute() {            super.onPreExecute();            pDialog = new ProgressDialog(NewProductActivity.this);            pDialog.setMessage("Creating Product..");            pDialog.setIndeterminate(false);            pDialog.setCancelable(true);            pDialog.show();        }        protected String doInBackground(String... args) {            String name = args[0],price = args[1],description = args[2];            List<nameValuePair> params = new ArrayList<nameValuePair>();            params.add(new BasicnameValuePair("name",name));            params.add(new BasicnameValuePair("price",price));            params.add(new BasicnameValuePair("description",description));            JsONObject Json = JsonParser.makehttpRequest(url_create_product,"POST",params);            Log.d("Create Response",Json.toString());            try {                int success = Json.getInt(TAG_SUCCESS);                if (success == 1) {                    Intent i = new Intent(getApplicationContext(),AllProductsActivity.class);                    startActivity(i);                    finish();                }                else {                }            } catch (JsONException e) {                e.printstacktrace();            }            return null;        }        protected voID onPostExecute(String file_url) {            pDialog.dismiss();        }    }}
解决方法 IDe指的是
String name = txtname.getText().toString();  String price = txtPrice.getText().toString();  String description = txtDesc.getText().toString();

读取值不应该是一个问题,但为了摆脱这个警告/错误,您可以将其移动到onClick并通过execute()传递值.例如.

btnSave.setonClickListener(new VIEw.OnClickListener() {    @OverrIDe    public voID onClick(VIEw arg0) {        String name = txtname.getText().toString();        String price = txtPrice.getText().toString();        String description = txtDesc.getText().toString();        new SaveProductDetails().execute(name,description);    }});

当调用doInBackground时,你可以通过前params,String … args读取那些bac.三个点构造保留为varargs,并且varargs可以使用[]表示法像数组一样访问.在示例的情况下,

args [0]包含name的值,args [1]包含price的值,args [2]包含description的值.

总结

以上是内存溢出为你收集整理的java – Android Studio错误:“必须从UI线程调用方法getText(),当前推断的线程是worker全部内容,希望文章能够帮你解决java – Android Studio错误:“必须从UI线程调用方法getText(),当前推断的线程是worker所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1148362.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存