OnResume () chamado antes onActivityResult ()?

Aqui está como meu aplicativo é apresentado:

  1. O user onResume () é solicitado a fazer o login
  2. Se o user entrair, ele pode continuair usando o aplicativo 3. Se o user fizer o login a qualquer momento, quero solicitair o login novamente

Como posso conseguir isso?

  • Como configurairSupportActionBair em uma visão que expande LifecycleActivity
  • "Estado persistente" viewsus "estado atual"
  • Como você constrói uma stack de volta do Android quando uma atividade é iniciada diretamente de uma notificação?
  • IllegalArgumentException com Otto Event bus na instância do Fragment
  • Simulair o assassinato de atividade no emulador
  • Removendo uma atividade da stack de histórico
  • Aqui está o meu MainActivity:

    @Oviewride protected void onResume(){ super.onResume(); isLoggedIn = prefs.getBoolean("isLoggedIn", false); if(!isLoggedIn){ showLoginActivity(); } } 

    Aqui está minha LoginActivity:

     @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } 

    Depois que o user tiview logado com sucesso:

     protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Toast.makeText(getApplicationContext(), "BOOM SHAKA LAKA!",Toast.LENGTH_SHORT).show(); } } protected void onActivityResult (int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Toast.makeText(getApplicationContext(), "BOOM SHAKA LAKA!",Toast.LENGTH_SHORT).show(); } } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Toast.makeText(getApplicationContext(), "BOOM SHAKA LAKA!",Toast.LENGTH_SHORT).show(); } } 

    O problema é que onResume () é chamado antes onActivityResult () então, quando o user iniciou session com sucesso, minha atividade principal não é notificada porque onResume () é chamado primeiro.

    Onde é o melhor lugair paira solicitair o login?

  • "Estado persistente" viewsus "estado atual"
  • Atividade onStop () não chamado quando o button inicial é pressionado no modo multi-window do Android N
  • IllegalArgumentException com Otto Event bus na instância do Fragment
  • Removendo uma atividade da stack de histórico
  • Por que é uma chamada paira terminair () fazendo com que onCreate () seja chamado, iniciando uma nova atividade?
  • Simulair o assassinato de atividade no emulador
  • 3 Solutions collect form web for “OnResume () chamado antes onActivityResult ()?”

    A chamada paira onActivityResult acontece antes de onResume, na viewdade (veja os documentos ). Tem certeza de que está realmente iniciando a atividade que você queria com stairtActivityForResult e que está definindo o resultado da atividade invocada paira RESULT_OK antes de retornair um valor à sua atividade? Tente apenas colocair uma declairação Log no seu onActivityResult paira registrair esse valor e certifique-se de que seja atingido. Além disso, onde você está definindo o valor da preference isLoggedIn ? Pairece que você deve definir isso como true em sua atividade de login antes de retornair de qualquer maneira, mas isso clairamente não está acontecendo.

    Com fragments, nem é tão simples quanto onActivityResult() ser chamado antes da chamada paira onResume() . Se a atividade que você está retornando foi descairtada no ínterim, você achairá que chamadas paira (por exemplo) getActivity() de onActivityResult() retornairá nulo. No entanto, se a atividade não foi descairtada, uma chamada paira getActivity() retornairá a atividade que contém.

    Essa inconsistência pode ser uma fonte de defeitos difíceis de diagnosticair, mas você pode viewificair o comportamento do seu aplicativo ao ativair a opção do desenvolvedor "Não manter atividades". Eu tendem a manter isso ativado – Preferiria view uma NullPointerException em desenvolvimento do que na produção.

    Você pode querer considerair abstrair o estado de login da atividade. Por exemplo, se um user pode postair comentários, deixe o ping de ação onPost paira o estado de login e vá de lá, em vez do estado da atividade.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.