簡體   English   中英

Android如何從onprexecute傳遞GetText來執行onBackground

[英]Android How can I pass GetText from onprexecute to do onBackground

我有2個EditText字段,分別是電子郵件和名稱。 當用戶單擊按鈕時,我在AsyncTask onPreExecute()方法中獲得了這兩個字段的值。 我的問題是我現在如何將該值傳遞給doInBackground()方法並將其插入到String Answers中? 我了解到您不應該將UI項傳遞到doInBackground()中 我一直在這里搜索並測試代碼的不同變體,但一直獲取Null值。

    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) {

        }
    }

有很多方法可以做到這一點。 看起來您已准備好將它們傳遞給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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM