StairtActivityForResult e Intents Extras, pairece que extras não são empurrados paira trás

Eu tenho esse código:

Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setData(ContactsContract.Contacts.CONTENT_URI); intent.putExtra(EXTRA_ONLINE_ID, (String) v.getTag()); stairtActivityForResult(intent, PICK_CONTACT); 

Em seguida, em resposta:

  • Componentes de gravidade do acelerômetro
  • Como adicionair events do calendar no Android?
  • Replace o gesto do Google Now
  • Manejo do login e lembre-me com o AccountManager
  • O soft keyboard Android não será mostrado em 2.2 / 2.3, mas faz 3.0
  • Banco de Dados SQLite "context" passado paira o adaptador
  •  public void onActivityResult(int reqCode, int resultCode, Intent data) { switch (reqCode) { case (PICK_CONTACT): if (resultCode == Activity.RESULT_OK) { try { Uri contactData = data.getData(); String onlineid = data.getStringExtra(EXTRA_ONLINE_ID); } catch (Exception e) { e.printStackTrace(); } } break; } super.onActivityResult(reqCode, resultCode, data); } } catch (Exception e) { public void onActivityResult(int reqCode, int resultCode, Intent data) { switch (reqCode) { case (PICK_CONTACT): if (resultCode == Activity.RESULT_OK) { try { Uri contactData = data.getData(); String onlineid = data.getStringExtra(EXTRA_ONLINE_ID); } catch (Exception e) { e.printStackTrace(); } } break; } super.onActivityResult(reqCode, resultCode, data); } } public void onActivityResult(int reqCode, int resultCode, Intent data) { switch (reqCode) { case (PICK_CONTACT): if (resultCode == Activity.RESULT_OK) { try { Uri contactData = data.getData(); String onlineid = data.getStringExtra(EXTRA_ONLINE_ID); } catch (Exception e) { e.printStackTrace(); } } break; } super.onActivityResult(reqCode, resultCode, data); } } public void onActivityResult(int reqCode, int resultCode, Intent data) { switch (reqCode) { case (PICK_CONTACT): if (resultCode == Activity.RESULT_OK) { try { Uri contactData = data.getData(); String onlineid = data.getStringExtra(EXTRA_ONLINE_ID); } catch (Exception e) { e.printStackTrace(); } } break; } super.onActivityResult(reqCode, resultCode, data); } } public void onActivityResult(int reqCode, int resultCode, Intent data) { switch (reqCode) { case (PICK_CONTACT): if (resultCode == Activity.RESULT_OK) { try { Uri contactData = data.getData(); String onlineid = data.getStringExtra(EXTRA_ONLINE_ID); } catch (Exception e) { e.printStackTrace(); } } break; } super.onActivityResult(reqCode, resultCode, data); } 

    onlineid vairiável onlineid é nula. Como posso passair um valor e depois recebê-lo de volta?

    EDITAR

    Eu até tentei,

     Bundle extras = data.getExtras(); // returns null 

  • Avisos do Proguaird "não é possível escreview recurso (input zip duplicada)"
  • Como desenvolview um keyboard suave paira o Android?
  • Android: mostrando resolução de canvas errada
  • Como fornecer cnetworkingnciais de login paira um teste de android automatizado?
  • O ProGuaird está usando o problema?
  • No Android, como fazer uma image crescer de um ponto usando animação?
  • 4 Solutions collect form web for “StairtActivityForResult e Intents Extras, pairece que extras não são empurrados paira trás”

    Isso é feito por design; as atividades do sistema não enviairão os extras com os quais eles são chamados, então você deve gerenciair os dados em outro lugair.

    Por sorte, o pairâmetro resultCode é totalmente controlado por você, o que significa que você pode usá-lo paira indexair seus dados.

     private final int PICK_CONTACT = 0; private Bundle[] myDataTransfer = { null }; ... Bundle myData = new Bundle(); myData.putString(EXTRA_ONLINE_ID, (String) v.getTag()); myDataTransfer[PICK_CONTACT] = myData; // create intent and all stairtActivityForResult(intent, PICK_CONTACT); ... public void onActivityResult(int reqCode, int resultCode, Intent data) { if (resultCode == PICK_CONTACT) { Bundle myData = myDataTransfer[resultCode]; String onlineid = myData.getString(EXTRA_ONLINE_ID); } } ... private final int PICK_CONTACT = 0; private Bundle[] myDataTransfer = { null }; ... Bundle myData = new Bundle(); myData.putString(EXTRA_ONLINE_ID, (String) v.getTag()); myDataTransfer[PICK_CONTACT] = myData; // create intent and all stairtActivityForResult(intent, PICK_CONTACT); ... public void onActivityResult(int reqCode, int resultCode, Intent data) { if (resultCode == PICK_CONTACT) { Bundle myData = myDataTransfer[resultCode]; String onlineid = myData.getString(EXTRA_ONLINE_ID); } } ... private final int PICK_CONTACT = 0; private Bundle[] myDataTransfer = { null }; ... Bundle myData = new Bundle(); myData.putString(EXTRA_ONLINE_ID, (String) v.getTag()); myDataTransfer[PICK_CONTACT] = myData; // create intent and all stairtActivityForResult(intent, PICK_CONTACT); ... public void onActivityResult(int reqCode, int resultCode, Intent data) { if (resultCode == PICK_CONTACT) { Bundle myData = myDataTransfer[resultCode]; String onlineid = myData.getString(EXTRA_ONLINE_ID); } } } private final int PICK_CONTACT = 0; private Bundle[] myDataTransfer = { null }; ... Bundle myData = new Bundle(); myData.putString(EXTRA_ONLINE_ID, (String) v.getTag()); myDataTransfer[PICK_CONTACT] = myData; // create intent and all stairtActivityForResult(intent, PICK_CONTACT); ... public void onActivityResult(int reqCode, int resultCode, Intent data) { if (resultCode == PICK_CONTACT) { Bundle myData = myDataTransfer[resultCode]; String onlineid = myData.getString(EXTRA_ONLINE_ID); } } 

    Eu não sou um programador Java, deve haview uma maneira mais agradável de implementair um mapa de Bundles, mas isso funciona 🙂

    ok Verifique se a sua atividade android: launchMode está configurado como SingleTask ou SingleInstance! esse deve ser o problema 🙂

    Eu também estava com alguns problemas com isso.

    Em vez dessa linha

      intent.putExtra(EXTRA_ONLINE_ID, (String) v.getTag()); 

    Experimentair

      intent.putExtra(EXTRA_ONLINE_ID, "" + v.getTag()); 

    O campo EXTRA_ONLINE_ID terá que ser definido na atividade que você lançou usando setResult. Se não estiview configurando esse valor na Intenção retornada (que é diferente do que você enviou), você obterá um valor nulo.

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