Android 获取片段内AsyncTask中的EditText值

Android 获取片段内AsyncTask中的EditText值,android,android-fragments,android-asynctask,Android,Android Fragments,Android Asynctask,我有一个片段,其中包含用户地址的EditText字段。我正试图通过AsyncTask将它们发送到我的Web服务器,但还没有弄清楚如何获取这些值。它工作正常,没有碎片。我试图删除所有不必要的代码。谢谢 public class FragmentProfileMain extends Fragment implements OnClickListener { EditText email2, email3, mail1, mail2, cityET, stateET, zipET; }

我有一个片段,其中包含用户地址的EditText字段。我正试图通过AsyncTask将它们发送到我的Web服务器,但还没有弄清楚如何获取这些值。它工作正常,没有碎片。我试图删除所有不必要的代码。谢谢

public class FragmentProfileMain extends Fragment implements OnClickListener {

    EditText email2, email3, mail1, mail2, cityET, stateET, zipET;

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    view = inflater.inflate(R.layout.profile_fragment_main, container,
            false);

    email1 = (TextView) view.findViewById(R.id.profileEmail1);
    email2 = (EditText) view.findViewById(R.id.profileEmail2);
    email3 = (EditText) view.findViewById(R.id.profileEmail3);
    mail1 = (EditText) view.findViewById(R.id.profileAddress1);
    mail2 = (EditText) view.findViewById(R.id.profileAddress2);
    cityET = (EditText) view.findViewById(R.id.profileCity);
    stateET = (EditText) view.findViewById(R.id.profileState);
    zipET = (EditText) view.findViewById(R.id.profileZip);

return view;
}

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

    @Override
    protected String doInBackground(String... args) {
        // TODO Auto-generated method stub
        // Check for success tag
        int success;

        try {
            // Building Parameters
            String secondemail = ((EditText) this.email2).getText().toString();
            String thirdemail = ((EditText) this.email3).getText().toString();
            String secaddress = ((EditText) this.mail1).getText().toString();
            String secaddresstwo = ((EditText) this.mail2).getText().toString();
            String secCity = ((EditText) this.cityET).getText().toString();
            String secState = ((EditText) this.stateET).getText().toString();
            String secZip = ((EditText) this.zipET).getText().toString();

        }
    }
公共类FragmentProfileMain扩展了片段实现OnClickListener{
EditText email2、email3、mail1、mail2、cityET、stateET、zipET;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(右布局剖面图、碎片图、主容器、,
假);
email1=(TextView)view.findViewById(R.id.profileEmail1);
email2=(EditText)view.findViewById(R.id.profileEmail2);
email3=(EditText)view.findViewById(R.id.profileEmail3);
mail1=(EditText)view.findViewById(R.id.profileAddress1);
mail2=(EditText)view.findViewById(R.id.profileAddress2);
cityt=(EditText)view.findViewById(R.id.profileCity);
statet=(EditText)view.findViewById(R.id.profileState);
zipET=(EditText)view.findViewById(R.id.profileZip);
返回视图;
}
类saveInfo扩展了异步任务{
@凌驾
受保护的字符串doInBackground(字符串…args){
//TODO自动生成的方法存根
//检查成功标签
成功;
试一试{
//建筑参数
字符串secondemail=((EditText)this.email2.getText().toString();
字符串thirdemail=((EditText)this.email3.getText().toString();
字符串secaddress=((EditText)this.mail1.getText().toString();
字符串secaddresstwo=((EditText)this.mail2.getText().toString();
字符串secCity=((EditText)this.cityt.getText().toString();
字符串secState=((EditText)this.statet.getText().toString();
字符串secZip=((EditText)this.zipET.getText().toString();
}
}

当您在
saveInfo
类中引用
this.email2
等时,
this
引用的类没有您在片段中实例化的
EditText
对象的概念

访问实例变量的一种方法是创建一个
saveInfo
构造函数,并从片段中将
视图
对象发送给它

在片段中,或在调用saveInfo任务的任何位置:

SaveInfo saveInfo = new SaveInfo(view) // 'saveInfo' should be capitalised
saveInfo
中:

...
View view;    
public SaveInfo (View view) {
    this.view = view;
}

@Override
protected String doInBackground(String... args) {
    // TODO Auto-generated method stub
    // Check for success tag
    int success;

    try {
        // Building Parameters
        String secondemail = view.email2.getText().toString();
....

当您在
saveInfo
类中引用
this.email2
等时,
this
是对在片段中实例化的
EditText
对象没有概念的类的引用

访问实例变量的一种方法是创建一个
saveInfo
构造函数,并从片段中将
视图
对象发送给它

在片段中,或在调用saveInfo任务的任何位置:

SaveInfo saveInfo = new SaveInfo(view) // 'saveInfo' should be capitalised
saveInfo
中:

...
View view;    
public SaveInfo (View view) {
    this.view = view;
}

@Override
protected String doInBackground(String... args) {
    // TODO Auto-generated method stub
    // Check for success tag
    int success;

    try {
        // Building Parameters
        String secondemail = view.email2.getText().toString();
....

当您在
saveInfo
类中引用
this.email2
等时,
this
是对在片段中实例化的
EditText
对象没有概念的类的引用

访问实例变量的一种方法是创建一个
saveInfo
构造函数,并从片段中将
视图
对象发送给它

在片段中,或在调用saveInfo任务的任何位置:

SaveInfo saveInfo = new SaveInfo(view) // 'saveInfo' should be capitalised
saveInfo
中:

...
View view;    
public SaveInfo (View view) {
    this.view = view;
}

@Override
protected String doInBackground(String... args) {
    // TODO Auto-generated method stub
    // Check for success tag
    int success;

    try {
        // Building Parameters
        String secondemail = view.email2.getText().toString();
....

当您在
saveInfo
类中引用
this.email2
等时,
this
是对在片段中实例化的
EditText
对象没有概念的类的引用

访问实例变量的一种方法是创建一个
saveInfo
构造函数,并从片段中将
视图
对象发送给它

在片段中,或在调用saveInfo任务的任何位置:

SaveInfo saveInfo = new SaveInfo(view) // 'saveInfo' should be capitalised
saveInfo
中:

...
View view;    
public SaveInfo (View view) {
    this.view = view;
}

@Override
protected String doInBackground(String... args) {
    // TODO Auto-generated method stub
    // Check for success tag
    int success;

    try {
        // Building Parameters
        String secondemail = view.email2.getText().toString();
....

您应该将edittext值作为参数传递给AsyncTask

您应该避免将视图传递给asynctask,以防在asynctask仍在运行时片段或活动被破坏。它还通过尽可能地解耦逻辑使asynctask更易于测试

public void startSaveInfo(){

    String firstEmail = email1.getText().toString();
    String secondEmail = email2.getText().toString();
    String thirdEmail = email3.getText().toString();
    String secaddress = mail1.getText().toString();
    String secaddresstwo = mail2.getText().toString();
    String secCity = cityEt.getText().toString();
    String secState = stateEt.getText().toString();
    String secZip = zipEt.getText().toString();

    new saveInfo().execute(secondemail,thirdEmail,secaddress,secaddresstwo,secCity,secState,secZip)

}

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

    @Override
    protected String doInBackground(String... args) {
            // Building Parameters
            String secondemail = args[0];
            String thirdemail = args[1];
            String secaddress = args[2];
            String secaddresstwo = args[3];
            String secCity = args[4];
            String secState = args[5];
            String secZip = args[6];

            //do your work

    }

}
public void startsavinfo(){
String firstEmail=email1.getText().toString();
字符串secondEmail=email2.getText().toString();
字符串thirdEmail=email3.getText().toString();
字符串secaddress=mail1.getText().toString();
字符串secaddresstwo=mail2.getText().toString();
字符串secCity=cityt.getText().toString();
字符串secState=statet.getText().toString();
字符串secZip=zipEt.getText().toString();
新建saveInfo().execute(secondemail、thirdEmail、secaddress、secaddresstwo、secCity、secState、secZip)
}
类saveInfo扩展了异步任务{
@凌驾
受保护的字符串doInBackground(字符串…args){
//建筑参数
字符串secondemail=args[0];
字符串thirdemail=args[1];
字符串secaddress=args[2];
字符串secaddresstwo=args[3];
字符串secCity=args[4];
字符串secState=args[5];
字符串secZip=args[6];
//做你的工作
}
}

您应该将edittext值作为参数传递给AsyncTask

您应该避免将视图传递给asynctask,以防在asynctask仍在运行时片段或活动被破坏。它还通过尽可能地解耦逻辑使asynctask更易于测试

public void startSaveInfo(){

    String firstEmail = email1.getText().toString();
    String secondEmail = email2.getText().toString();
    String thirdEmail = email3.getText().toString();
    String secaddress = mail1.getText().toString();
    String secaddresstwo = mail2.getText().toString();
    String secCity = cityEt.getText().toString();
    String secState = stateEt.getText().toString();
    String secZip = zipEt.getText().toString();

    new saveInfo().execute(secondemail,thirdEmail,secaddress,secaddresstwo,secCity,secState,secZip)

}

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

    @Override
    protected String doInBackground(String... args) {
            // Building Parameters
            String secondemail = args[0];
            String thirdemail = args[1];
            String secaddress = args[2];
            String secaddresstwo = args[3];
            String secCity = args[4];
            String secState = args[5];
            String secZip = args[6];

            //do your work

    }

}
public void startsavinfo(){
String firstEmail=email1.getText().toString();
字符串secondEmail=email2.getText().toString();
字符串thirdEmail=email3.getText().toString();
字符串secaddress=mail1.getText().toString();
字符串secaddresstwo=mail2.getText().toString();
字符串secCity=cityt.getText().toString();