1

J'ai l'application Simple d'abord J'affiche MainActivity puis après que MainActivity est devenu visible, j'affiche TransparentActivity après que je clique sur OnClick Je tue TransparentActivity et je crée et affiche une boîte de dialogue. Au cours de la dernière étape, je reçois ErreurEchec de la livraison du résultat ResultInfo | java.lang.IllegalStateException: Impossible d'effectuer cette action après onSaveInstanceState

Erreur

Failure delivering result ResultInfo{who=null, request=1234, result=-1, data=Intent { }} to activity {com.example.kylu.layout/com.example.kylu.layout.GuidePhotoAlbum}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 

MainActivity

public class MainActivity extends FragmentActivity 
{ 
public static boolean flag=false; 
    private static int REQUEST_CODE = 1234; 

    @Override public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mylayout); 
    } 

@Override 
protected void onResume() { 
    super.onResume(); 
    //transparentShows only once 
    if(!flag) 
    { 
     Intent i = new Intent(this, TransparentTip.class); 
     startActivityForResult(i, REQUEST_CODE); 
     flag=true; 
    } 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (REQUEST_CODE == requestCode) { 
      if (resultCode == Activity.RESULT_OK) { 
       Toast.makeText(this, "Show dialog", Toast.LENGTH_SHORT).show(); 
       DialogChoiceActivity dialogChoiceActivity = new DialogChoiceActivity(); 
       dialogChoiceActivity.show(getSupportFragmentManager(),"mydialog"); 
      } else if (resultCode == Activity.RESULT_CANCELED) { 
       Toast.makeText(this, "Don't show dialog", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 

TransparentTip

public class TransparentTip extends Activity { 

     public static int countTransp=0; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.transparent_tip); 
      Button ok=(Button)findViewById(R.id.bToK); 
     } 

     public void buttonClick(View view) 
     { 
      if (view.getId() == R.id.bToK) 
      { 
       final Intent intent = new Intent(); 
       setResult(Activity.RESULT_OK, intent); 
       finish(); 
      } 
     } 

DialogChoiceActivity

public class DialogChoiceActivity extends DialogFragment { 

    LayoutInflater inflater; 
    View v; 

    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     inflater = getActivity().getLayoutInflater(); 
     v = inflater.inflate(R.layout.dialog_email, null); 
     final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setTitle("Email " + " 1/10"); 
     builder..setNegativeButton("Exit", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Intent intent = new Intent(getActivity(), MainActivity.class); 
       startActivity(intent); 
      } 
     }); 
     return builder.create(); 
    } 
} 

Une fois que Transparent n'est plus visible, je souhaite afficher Dialog au-dessus de MainActivity. J'ai essayé d'afficher ce dialogue surResume à mais je reçois une erreur similaire

+1

dialogChoiceActivity.show (getSupportFragmentManager(), "monDialogue"); problème est en ligne poster votre code de classe DialogChoiceActivity ici –

+0

@HiteshGehlot ok je mets le code de dialogue –

+0

Je dois ajouter que si j'appelle normalement cette boîte de dialogue sans transparent cela fonctionne donc pas ici problème –

Répondre

0

Vous pouvez utiliser dialogChoiceActivity.show (getFragmentManager(), "mydia log");

cette ligne a erreur de syntaxe il y a deux points builder..setNegativeButton ("Exit", nouveau DialogInterface.OnClickListener() {

devrait être comme ça builder.setNegativeButton ("Exit", nouveau DialogInterface.OnClickListener() {

+1

Suivant gars aveugle, j'ai écrit ce dialogue n'est pas un problème parce que je montre un problème si je ne montre pas d'activité transparente, je ne mets pas ici tout mon code de ligne 200 simple dialogue donc c'est pourquoi 2 points juste erreur en éditant le code –

+0

+ je peux n'utilisez pas getFragmentManager() pour que votre réponse soit inutile –

3

Il devrait fonctionner si vous mettez cette ligne dans votre onActivityResult:

super.onActivityResult(requestCode,resultCode,intent); 

Ainsi, votre onActivityResult devrait ressembler à ceci:

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode,resultCode,intent); 
    if (REQUEST_CODE == requestCode) { 
     if (resultCode == Activity.RESULT_OK) { 
      Toast.makeText(this, "Show dialog", Toast.LENGTH_SHORT).show(); 
      DialogChoiceActivity dialogChoiceActivity = new DialogChoiceActivity(); 
      dialogChoiceActivity.show(getSupportFragmentManager(),"mydialog"); 
     } else if (resultCode == Activity.RESULT_CANCELED) { 
      Toast.makeText(this, "Don't show dialog", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}