У меня есть фрагмент с полями EditText для адреса пользователя. Я пытаюсь отправить их на свой веб-сервер через AsyncTask, но не понял, как получить значения. Он отлично работает без фрагментов. Я попытался удалить все ненужные коды. Благодарю.Получить значение EditText в AsyncTask внутри фрагмента
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();
}
}
Получаете ли вы какие-либо ошибки или просто нет значений? Рассматривали ли вы создание конструктора для своего класса 'saveInfo' и передачу в ссылках' EditText', которые вы создали в 'onCreateView' вашего фрагмента? Тогда у вас будут локализованные переменные в классе 'saveInfo'. – CodeMonkey
Спасибо, что посмотрели. Я получаю сообщение об ошибке email2, email3 и т. Д. В моем разделе Строка secondemail = ((EditText) this.email2) .getText(). ToString(); Наведение ошибки на мой выбор - создать поле «email2» в типе saveInfo. Добавление поля private EditText email2; в моем классе saveInfo не помогает. Он не ссылается на EditText в фрагменте. – JeffK
ОК. Вы ссылаетесь на 'this.email2', но' this' указывает на ваш 'saveInfo' класс, который не имеет понятия' email2'. Вам нужно передать ссылку на макет фрагмента, создав конструктор (это один из способов сделать это). – CodeMonkey