有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android如何将GetText从onprexecute传递到onBackground

我有两个编辑文本字段,分别是email和name。当用户单击按钮时,我会在AsyncTaskonPreExecute()方法中获得这两个字段的值。我的问题是,现在如何将该值传递给doInBackground()方法,并将其插入字符串答案中?我学到了不应该将UI项传递到doInBackground()。我一直在这里搜索并测试代码的不同变体,但不断得到空值

    private class myprofile extends AsyncTask<String,Void,Boolean> {



        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            Email= (EditText)findViewById(R.id.email);
            String email= Email.getText().toString();


            Name= (EditText)findViewById(R.id.name);
            String name= Name.getText().toString();

        }

        @Override
        protected Boolean doInBackground(String... params) {

            String email = params[0];
            String name = params[1];



            String Answers="email="+email+"&name="+name;

            return null;

        }

       // @Override
        protected void onPostExecute(Boolean result) {

        }
    }

共 (1) 个答案

  1. # 1 楼答案

    有很多方法可以做到这一点。看起来你已经准备好将它们传递到execute()

    1)传入AsyncTask.execute()

    String email= Email.getText().toString();
    String name= Name.getText().toString();
    new myprofile().execute(email, name);
    

    2)传递给构造函数

    private class myprofile extends AsyncTask<Void,Void,Boolean> {
        private String email;
        private String name;
        public myprofile(String email, String name){
            this.email = email;
            this.name = name;
        }
        ...
    }
    

    String email= Email.getText().toString();
    String name= Name.getText().toString();
    new myprofile(email, name).execute();
    

    3)在onPreExecute()中检索

    private String email;
    private String name;
    protected void onPreExecute() {
        super.onPreExecute();
    
        email = Email.getText().toString();
        name = Name.getText().toString();
    }