используя значения edittext в классе asynctask - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть простое тестовое приложение, которое получает от пользователя 2 строки в редактируемом тексте и помещает его в файл php и, наконец, в базу данных mysql. я хава 2 редактирую текст и одну кнопку В моем Java-файле я создал класс asycnctask namd sendpost

Я хочу использовать значения 2 edittext внутри класса asynctask, но он говорит:
значения gettext должны использоваться внутри пользовательского интерфейса

Просьба помочь мне через это

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();

    }
}

}

Я пытался передать это, хотя аргументы, но все еще не работает ОНО ГОВОРИТ, что не может подать заявку (namee & mailee) в Sendpost ... пожалуйста, скажите мне, что не так

большое спасибо заранее

 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);
    }

1 Ответ

0 голосов
/ 28 апреля 2018

В итоге я использую этот код, и он прекрасно работает

 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());
...