Я пытаюсь передать свой фрагмент в класс ASyncTask, чтобы после завершения задачи я мог обновить виджет или два в фрагменте. Вот что я имею дело с:Можно ли передать фрагмент в конструкторе?
public class LoginFragment extends Fragment {
Button loginButton;
TextView loginErrorMsg;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.loginfragment, container, false);
}
public OnClickListener loginListener = new OnClickListener() {
@Override
public void onClick(View v) {
Log.v("LoginF", "onclick");
ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Logging in...");
LoginTask loginTask = new LoginTask((Polling) getActivity(), progressDialog);
loginTask.execute();
}
};
И в LoginTask:
public class LoginTask extends AsyncTask<String, Void, Integer> {
private ProgressDialog progressDialog;
private Polling activity;
private int id = -1;
private JSONParser jsonParser;
private static String loginURL = "http://davidjkelley.net/android_api/";
private static String registerURL = "http://davidjkelley.net/android_api/";
private static String KEY_SUCCESS = "success";
private static String KEY_ERROR = "error";
private static String KEY_ERROR_MSG = "error_msg";
private static String KEY_UID = "uid";
private static String KEY_NAME = "name";
private static String KEY_EMAIL = "email";
private static String KEY_CREATED_AT = "created_at";
TextView loginErrorMsg = (EditText)activity.findViewById(R.id.loginErrorMsg);
EditText userName = (EditText)activity.findViewById(R.id.emailEditText);
EditText passwordEdit = (EditText)activity.findViewById(R.id.passEditText);
public LoginTask(Polling activity, ProgressDialog progressDialog)
{
this.activity = activity;
this.progressDialog = progressDialog;
}
Так что я хотел бы добавить третий параметр в конструктор LoginTask, по существу экземпляр моего LoginFragment. Моя цель состоит в том, чтобы обновить TextView или поставить Toast на экране, чтобы уточнить, будет ли логин успешным или неудачным: как сейчас, у пользователя нет способа сообщить, как логин прошел. Идеи?
Мне нравится это лучше, так как он «ближе» к Android-вещам (в частности, к шаблону Listener). На практике я использовал абстрактные базовые классы вместо интерфейса, поскольку методы обратного вызова часто имеют некоторые реализации по умолчанию. – curioustechizen