【问题标题】:Using edittext values in asynctask class在 asynctask 类中使用 edittext 值
【发布时间】:2018-10-07 13:46:50
【问题描述】:

我有一个简单的测试应用程序,它在编辑文本中从用户那里获取 2 个字符串,并将其发送到 php 文件,最后发送到 MySQL 数据库 我有 2 个编辑文本和一个按钮 在我的 Java 文件中,我创建了一个 asycnctask 类 namd sendpost

我想在 asynctask 类中使用 2 edittext 的值,但它说:

gettext 的值必须在 ui 内部使用

Button btn;
EditText name;
EditText email;

    @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    btn =(Button) findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new SendPost().execute();
            Intent i = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(i);

        }

class SendPost extends AsyncTask<String, String, String> {
    @Override
    protected String doInBackground(String... params) {

        String NameHolder = name.getText().toString() ;
        String EmailHolder = email.getText().toString() ;
        String Address = "http://nardooon.ir/post.php";
        HashMap hashmap = new HashMap();
        hashmap.put("name", NameHolder);
        hashmap.put("email", EmailHolder);
        return Utils.sendData(Address,hashmap);
    }

    @Override
    protected void onPostExecute(String result) {

        super.onPostExecute(result);

        Toast.makeText(Main2Activity.this, "Data Submit Successfully", Toast.LENGTH_LONG).show();

    }
}
}

我试图通过 args 传递它,但仍然无法正常工作
它说不能在 Sendpost 中应用 (namee & mailee) ...
怎么了?

 btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            
            String namee = name.getText().toString();
            String mailee = email.getText().toString();
            new SendPost(namee,mailee).execute();
            Intent i = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(i);

        }
    });



    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}



class SendPost extends AsyncTask<String, String, String> {
    

    @Override
    protected String doInBackground(String... args) {


        String NameHolder = args[0] ;
        String EmailHolder = args[1] ;
        String Address = "http://nardooon.ir/post.php";
        HashMap hashmap = new HashMap();
        hashmap.put("name", NameHolder);
        hashmap.put("email", EmailHolder);
        return Utils.sendData(Address,hashmap);
    }

【问题讨论】:

    标签: android-asynctask android-edittext


    【解决方案1】:

    我最终使用了这段代码:

     private class DownloadFile extends AsyncTask<String, Integer, String> {
    
        private final String url;
    
        DownloadFile(final String url) {
            this.url = url;
        }
    
        @Override
        protected String doInBackground(String... args) {
    
        String NameHolder = this.url ;
         String EmailHolder = args[0]  ;
    

    并使用此代码调用类:

    new DownloadFile(txt.getText().toString()).execute(txt2.getText().toString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多