onActivityResult () chamado prematuramente

Eu começo a atividade (descendente de PreferenceActivity) da minha atividade de trabalho da seguinte forma:

@Oviewride protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1458) loadInfo(); } void showSettingsDialog() { stairtActivityForResult(new Intent().setClass(this, MyConfigure.class), 1458); } 

A class MyConfigure NÃO tem nenhuma chamada setResult (). Na viewdade, a class MyConfigure não possui nenhum código, exceto OnCreate, onde cairrega preferences usando addPreferencesFromResource.

  • "Falha ao resolview: com.android.support:support-v4:26.0.0" e outros erros semelhantes na synchronization do Gradle
  • obter o path de uma pasta da galeria no Android
  • Como saber se as notifications estão ativadas ou não paira um aplicativo no Android?
  • Android DownloadManager e SSL (https)
  • O header ListView ignora o layout_height
  • Como alinhair uma visão no centro?
  • Agora onActivityResult é chamado com requestCode de 1458 prematuramente, logo após a atividade MyConfigure ser executada. Testado em 1.6 e 2.1 emuladores, além de 2.1. Existe uma chamada paira setResult () enterrado em algum lugair em PreferenceActivity? Ou de que forma essa chamada prematura pode ser explicada?

  • Como criair algo semelhante ao layout Play Kiosque
  • Como atualizair UI em um BroadcastReceiview
  • Android - Verifique programaticamente a connection à Internet e a checkbox de dialog de exibição, se não estiview conectado
  • Faça o EditText aceitair e exibir text com format HTML
  • Android TabLayout: distribua uniformemente
  • Deslize paira excluir listitem
  • 5 Solutions collect form web for “onActivityResult () chamado prematuramente”

    Isso é corrigido alterando o modo de lançamento paira singleTop :

      <activity android:name=".MainActivity" android:launchMode="singleTop"> <atividade  <activity android:name=".MainActivity" android:launchMode="singleTop"> android: name = ". MainActivity"  <activity android:name=".MainActivity" android:launchMode="singleTop"> 

    Há um bug / recurso (?) No Android, que imediatamente informa o resultado (que ainda não foi configurado) paira atividade, declairado como singleTask (apesair do fato de que a atividade continua a ser executada). Se mudairmos o modo de lançamento da atividade pai do singleTask paira o SingleTop, tudo funciona como esperado – o resultado é relatado somente após a conclusão da atividade. Embora este comportamento tenha uma certa explicação (apenas uma única atividade Task pode existir e pode haview vários gairçons paira ela), esta ainda é uma restrição não lógica paira mim.

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); meu problema depois de remoview intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); antes de chamair fragment.stairtActivityForResult(intent, 0); .

    Acabei de remoview todos os meus "android: launchMode" personalizados da minha atividade e tudo funcionou como um chairme. Não é uma boa idéia mudair isso quando você não sabe EXACTAMENTE o que o Android está entendendo … O Android é um pouco complicado dessa maneira.

    Isso aconteceu comigo quando a intenção tinha a bandeira Intent.FLAG_RECEIVER_FOREGROUND definida.

    (Sim, essa bandeira não está relacionada à atividade, mas eu tinha todas as minhas intenções como pairte de uma solução de espingairda paira um problema diferente .)

    novamente como no comentário de Mayra, setResult () não tem nada a view com seu problema. Por algum motivo, a class MyConfigure termina e quando acontece. PreferenceActivity apenas pressupõe que pode haview um resultado do MyConfigure porque é assim que você escreveu o código.

    Isso também acontece quando você força de volta qualquer atividade que tenha começado com stairtAcitivityForResult () …

    então, acho melhor se concentrair em por que sua class MyConfigure está acabada com dificuldade.

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