Boa tarde pessoal.
Estou tentando implementar em minha aplicação um processo para registrar e desregistrar as AsyncTasks(no mesmo modelo do curso FJ59 que fiz na caellum).
Em uma determinada parte do código passou a dar erro citado no título.
Poderiam ver se algum dos senhores sabe o que está errado?
Segue minha AsyncTask
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import com.google.gson.Gson;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import oncoprod.com.br.oncosalesandroid.TaskComplete;
/**
- Created by eric.miranda on 30/12/2015.
*/
public class GsonTask extends AsyncTask<String, Object, T> {
private final Context mContext; private TaskComplete delegate; private ProgressDialog progress; private Class<T> type; T jsonRetorno; String urlParam; String wrapped; private boolean hasProgress; private String msgProgress; private Exception erro;
public GsonTask (Context mContext, TaskComplete delegate, Class<T> classType, String wrapped, boolean hasProgress, String msgProgress) { this.mContext = mContext; this.delegate = delegate; type = classType; this.wrapped = wrapped; this.hasProgress = hasProgress; this.msgProgress = msgProgress; this.delegate.getOncoSalesAndroidApplication().registra(GsonTask.this); }
@Override protected void onPreExecute() { if (hasProgress) { progress = ProgressDialog.show(mContext, "Aguarde...", msgProgress, true, true); } }
@Override protected T doInBackground(String... params) { try { URL json = new URL(params[0]); URLConnection jc = json.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream()));
String line = reader.readLine();
JSONObject jsonResponse = new JSONObject(line).getJSONObject(wrapped);
Gson gson = new Gson();
jsonRetorno = (T)gson.fromJson(jsonResponse.toString(),type);
reader.close(); return jsonRetorno;
} catch(Exception e){ erro = e; return null; }
}
@Override protected void onPostExecute( T lista) {
if (lista != null) { delegate.onTaskComplete(lista); } else { delegate.onTaskException(erro); }
this.delegate.getOncoSalesAndroidApplication().desregistra(GsonTask.this);
if (hasProgress){ progress.dismiss(); } }
}
segue minha classe que chama a async
chamando desta forma não dá erro,porém não consigo ter a task para fazer o registro
public class AberturaActivity extends Activity implements TaskComplete {
Button btnLogin;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_abertura);
final EditText edtUsuario = (EditText) findViewById(R.id.edtUsuario); final EditText edtSenha = (EditText) findViewById(R.id.edtSenha);
//Código para setar o foco para o edittext do usuario edtUsuario.setFocusableInTouchMode(true); edtUsuario.requestFocus();
//Código para chamar o teclado getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
//region Eventos btnLogin btnLogin = (Button) findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String strHexa = Hexadecimal.convertStringToHex(edtSenha.getEditableText().toString());
if (!Aguardando) { Aguardando = true;
AnimarComponenteBotao(AberturaActivity.this, "Aguarde...");
String urlParam = AberturaActivity.this.getString(R.string.urlAutenticarUsuario) + edtUsuario.getEditableText()+"/"+strHexa;
new GsonTask<AutenticarUsuario>(AberturaActivity.this, AberturaActivity.this, AutenticarUsuario.class, "AutenticarUsuarioResult", false, null).execute(urlParam);
} } }); //endregion
}
…
Chamando desta forma dá erro, que é a forma que teoricamente deveria funcionar…
Debugando parece que ele nem entra no doinbackground
public class AberturaActivity extends Activity implements TaskComplete {
Button btnLogin; private GsonTask taskLogin;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_abertura);
final EditText edtUsuario = (EditText) findViewById(R.id.edtUsuario); final EditText edtSenha = (EditText) findViewById(R.id.edtSenha);
//Código para setar o foco para o edittext do usuario edtUsuario.setFocusableInTouchMode(true); edtUsuario.requestFocus();
//Código para chamar o teclado getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
//region Eventos btnLogin btnLogin = (Button) findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String strHexa = Hexadecimal.convertStringToHex(edtSenha.getEditableText().toString());
if (!Aguardando) { Aguardando = true;
AnimarComponenteBotao(AberturaActivity.this, "Aguarde...");
String urlParam = AberturaActivity.this.getString(R.string.urlAutenticarUsuario) + edtUsuario.getEditableText()+"/"+strHexa;
taskLogin = new GsonTask<AutenticarUsuario>(AberturaActivity.this, AberturaActivity.this, AutenticarUsuario.class, "AutenticarUsuarioResult", false, null); taskLogin.execute(urlParam); } } }); //endregion
}
…
Obrigado