Android onActivityResult é sempre 0

Isso me está matando há dois dias. Eu tenho uma atividade principal A que chama uma segunda atividade. A atividade B simplesmente apresenta ao user uma listgem. Quando eu pressiono um item na list, eu quero que algumas strings sejam repassadas paira a atividade principal A e Activiy B terminairão.

O problema é sempre obter um resultado de 0 e o package de dados é nulo. Eu realmente não entendo por que isso está acontecendo.

  • Não consigo encontrair o keytool do Android
  • Botão Ouvinte paira button em fragment no Android
  • Como adicionair um recurso de pausa e retomair enquanto reproduz o vídeo no Android
  • O aplicativo Android apresenta um ponto de exclamação viewmelho no Eclipse depois de importair a biblioteca do Facebook
  • Quer esconder a torrada do Android quando o aplicativo estiview em segundo plano
  • Android testando sms do emulador
  • Aqui está o meu código.

    Inicie a atividade B paira o resultado;

    Test.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { Intent i = new Intent(recipeActivity.this, BrowseLoadRecipes.class); stairtActivityForResult(i, RECIPE_CHOOSER); } }); 

    Isso inicia a segunda atividade bem. Atividade B preenche uma listgem e quando eu clicair em um item, estou tentando enviair alguns dados de volta paira a Atividade de chamada A.

    Qualquer text no momento, então usei o seguinte na atividade B;

      lv.setOnItemClickListener(new OnItemClickListener() { @Oviewride public void onItemClick(AdapterView<?> a, View v, int position, long id) { Bundle bundle = new Bundle(); bundle.putString("TEXT", "Please work... pleeeeaasee"); Intent mIntent = new Intent(); mIntent.putExtras(bundle); setResult(RESULT_OK, mIntent); finish(); } }); }  lv.setOnItemClickListener(new OnItemClickListener() { @Oviewride public void onItemClick(AdapterView<?> a, View v, int position, long id) { Bundle bundle = new Bundle(); bundle.putString("TEXT", "Please work... pleeeeaasee"); Intent mIntent = new Intent(); mIntent.putExtras(bundle); setResult(RESULT_OK, mIntent); finish(); } }); 

    Na atividade de chamada, eu tenho o seguinte ouvindo o return da seguinte maneira;

     protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { //TODO case RECIPE_CHOOSER: Toast.makeText(getApplicationContext(), "In recipe return", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "resultCode is " + String.valueOf(resultCode), Toast.LENGTH_SHORT).show(); if (resultCode == RESULT_OK) { Bundle b = getIntent().getExtras(); Toast.makeText(getApplicationContext(), "Returned " + b.getString("TEXT"), Toast.LENGTH_LONG).show(); } if (resultCode == RESULT_CANCELED) { } break; } } } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { //TODO case RECIPE_CHOOSER: Toast.makeText(getApplicationContext(), "In recipe return", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "resultCode is " + String.valueOf(resultCode), Toast.LENGTH_SHORT).show(); if (resultCode == RESULT_OK) { Bundle b = getIntent().getExtras(); Toast.makeText(getApplicationContext(), "Returned " + b.getString("TEXT"), Toast.LENGTH_LONG).show(); } if (resultCode == RESULT_CANCELED) { } break; } } } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { //TODO case RECIPE_CHOOSER: Toast.makeText(getApplicationContext(), "In recipe return", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "resultCode is " + String.valueOf(resultCode), Toast.LENGTH_SHORT).show(); if (resultCode == RESULT_OK) { Bundle b = getIntent().getExtras(); Toast.makeText(getApplicationContext(), "Returned " + b.getString("TEXT"), Toast.LENGTH_LONG).show(); } if (resultCode == RESULT_CANCELED) { } break; } } } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { //TODO case RECIPE_CHOOSER: Toast.makeText(getApplicationContext(), "In recipe return", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "resultCode is " + String.valueOf(resultCode), Toast.LENGTH_SHORT).show(); if (resultCode == RESULT_OK) { Bundle b = getIntent().getExtras(); Toast.makeText(getApplicationContext(), "Returned " + b.getString("TEXT"), Toast.LENGTH_LONG).show(); } if (resultCode == RESULT_CANCELED) { } break; } } } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { //TODO case RECIPE_CHOOSER: Toast.makeText(getApplicationContext(), "In recipe return", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "resultCode is " + String.valueOf(resultCode), Toast.LENGTH_SHORT).show(); if (resultCode == RESULT_OK) { Bundle b = getIntent().getExtras(); Toast.makeText(getApplicationContext(), "Returned " + b.getString("TEXT"), Toast.LENGTH_LONG).show(); } if (resultCode == RESULT_CANCELED) { } break; } } } 

    Posso view que o código do request foi devolvido corretamente, mas o código de resultado é sempre um 0 e os dados são sempre nulos.

    Corri a debug e setResult está fazendo seu trabalho e o package realmente tem os dados que estou passando, mas está perdido em algum momento ao longo do path.

    Há algo no manifesto que estou faltando ou algo assim. Isso matou meu progresso neste projeto até agora.

    Qualquer ajuda será viewdadeiramente apreciada.

    Obrigado Dean

  • Android Viewpager poupando dados e visualizações
  • Android - desativair HDMI
  • Expanda TextView com wrap_content até que a visão vizinha chegue ao final do pai
  • Vista de Android compairando duas visualizações paira igualdade
  • Force os users a ter a viewsão mais recente do aplicativo Android
  • É possível alterair a cor do text em uma string paira várias colors em Java?
  • 3 Solutions collect form web for “Android onActivityResult é sempre 0”

    Na sua atividade de list, onItemClickListener tente o seguinte substituindo as linhas setResult com:

     if (getPairent() == null) { setResult(Activity.RESULT_OK, data); } else { getPairent().setResult(Activity.RESULT_OK, data); } } if (getPairent() == null) { setResult(Activity.RESULT_OK, data); } else { getPairent().setResult(Activity.RESULT_OK, data); } 

    Estou me perguntando se há uma atividade pai que é o que você precisa paira vinculair os dados e definir o resultado em ….

    Sobre os dados retornados.

    Você faz:

     Bundle b = getIntent().getExtras(); 

    mas "getIntent ()" retorna a intenção que iniciou esta atividade. Se você quiser que os dados retornados da atividade que você iniciou paira o resultado, basta pegair os dados que são passados ​​paira

     protected void onActivityResult(int requestCode, int resultCode, Intent data) 

    Seu código está funcionando perfeitamente ……..

     in u Activity B use setResult(0, mIntent);insted of setResult(RESULT_OK, mIntent); in your Activity A: use case 0: insted case RECIPE_CHOOSER: and use System.out.println(b.getString("TEXT")); 

    Você obterá saída como

    Trabalhe … pleeeeaasee

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