package org.goodev.discourse.ui; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import org.goodev.discourse.utils.Utils; public class CheckLoginInfoFragment extends Fragment { private CheckLoginInfoCallback mCallback; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mCallback = (CheckLoginInfoCallback) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement " + CheckLoginInfoCallback.class.getSimpleName()); } } @Override public void onDetach() { super.onDetach(); mCallback = null; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); Bundle args = getArguments(); String url = args.getString(Utils.EXTRA_URL); String password = args.getString(Utils.EXTRA_PASSWORD); String name = args.getString(Utils.EXTRA_NAME); new CheckUrlTask(name, password).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, url); } public interface CheckLoginInfoCallback { void onPreCheckExecute(); void onCheckResult(boolean ok); } private class CheckUrlTask extends AsyncTask<String, Void, Boolean> { private final String mName; private final String mPassword; public CheckUrlTask(String name, String password) { mName = name; mPassword = password; } @Override protected Boolean doInBackground(String... params) { String site = params[0]; return Utils.checkLoginInfo(site, mName, mPassword); } @Override protected void onPreExecute() { super.onPreExecute(); if (mCallback != null) { mCallback.onPreCheckExecute(); } } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (mCallback != null) { mCallback.onCheckResult(result); } } } }