0
I have a class RepositorioCidades
searching data from cities using AsyncTask
and returns a ArrayAdapter
to the MainActivity
, but when I call the MainActivity
is a black screen until the data of the city is loaded.
public class RepositorioCidades {
public ArrayAdapter<Cidades> buscaCidades(MainActivity context) {
ArrayAdapter adpCidades = new ArrayAdapter(context, R.layout.simple_spinner_main);
try {
return new getCidades(adpCidades).execute().get();
}catch (Exception e){
e.printStackTrace();
}
return null;
}
private static class getCidades extends AsyncTask<Void, Void, ArrayAdapter<Cidades>> {
private ArrayAdapter<Cidades> adpCidades;
private String url = "https://www.repositoriocidades.com.br/retornacidade.php";
private getCidades(ArrayAdapter<Cidades> adpCidades) {
this.adpCidades = adpCidades;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected ArrayAdapter<Cidades> doInBackground(Void... params) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// JSONArray contacts = new JSONArray(jsonStr);
// Getting JSON Array node
JSONArray contacts = jsonObj.getJSONArray("cidades");
// looping through All Contacts
if (contacts != null) {
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);
Cidades cidades1 = new Cidades();
cidades1.setCod_cidade(c.getString("cod_cidade"));
cidades1.setNome(c.getString("nome")+", "+c.getString("estado_uf"));
adpCidades.add(cidades1);
}
}
return adpCidades;
} catch (final JSONException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(ArrayAdapter<Cidades> result) {
super.onPostExecute(result);
}
}
}
Here’s the call on Activity:
public class MainActivity extends AppCompatActivity{
RepositorioCidades repositorioCidades;
ArrayAdapter<Cidades> adpCidades;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (VerificaInternet.isOnline(this)) {
verificaLogin();
repositoriosAcessos.acessosGeral(usuarioGlobal.getEmail_usuario());
repositorioCidades = new RepositorioCidades();
adpCidades = repositorioCidades.buscaCidades(this);
repositorioCidades = null;
}else{
noInternet();
}
}
}
private void verificaLogin(){
if (preferences.contains("Habilitado")){
usuarioGlobal.setNome_usuario(preferences.getString("NomeUsuario",""));
usuarioGlobal.setEmail_usuario(preferences.getString("EmailUsuario",""));
} else {
it = new Intent(this, ActLogin.class);
startActivityForResult(it, 0);
MainActivity.this.fileList();
}
}
}
Verificainternet:
public class VerificaInternet {
public static boolean isOnline(Context ctx) {
ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
}
Enter the code of
VerificaInternet
,VerificaLogin
...– rbz
Even without using the Ternet check and the checkLogin still black screen =/
– Rodrigo Cecilio
Tracked by the console to know where the delay is?
– rbz