-1

J'ai une activité avec le fragment A ajouté dynamiquement. Maintenant, je transacte du fragment A au fragment B. Et puis du fragment B au fragment C. Maintenant, j'ai un bouton ici lorsque je clique va passer un appel. Je ne suis pas en mesure de démarrer l'intention d'appel et le journal des erreurs indique une exception d'état illégal - Aucune activité trouvée pour gérer l'intention. Cela signifie-t-il qu'il n'y a aucune activité trouvée pour le fragment C imbriqué? Comment cela peut-il arriver (fragmentation de la création sans activité)? Tous les fragments sont également créés dynamiquement pendant l'exécution. J'ai essayé ceci en utilisant à la fois la méthode getfragmentmanager() et la méthode getchildfragmentmanager(). Je fais face à cette erreur dans les deux cas. Toutes les suggestions seraient très appréciées.Fragment imbriqué-Aucune activité pour gérer l'intention

Voici mon extrait de code

Fixation Fragment A à activité

FragmentManager fm = getFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.add(R.id.container,FragmentA_.builder().build()); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
ft.addToBackStack(null); 
ft.commit(); 

Remplacement Fragment A avec Fragment B

FragmentManager fm = getFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.replace(R.id.container, FragmentB_.builder().build()); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
ft.addToBackStack(null); 
ft.commit(); 

Remplacement Fragment B avec le fragment C

FragmentManager fm = getFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.replace(R.id.container, FragmentC_.builder().build()); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
ft.addToBackStack(null); 
ft.commit(); 

intention Appel

public void call(String contact){ 
Intent i=new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+contact)); 
getActivity().startActivity(i); 
} 

Dans mon manifest.xml j'ai ajouté toutes les autorisations pour l'appel.

Edition - Méthode 2 Code Fragment C

@EFragment(R.layout.fragment_c) 
public class FragmentC extends Fragment 
{ 
@Click(R.id.call_button) 
void call(){ 
call(phone_number); 
} 
    public void call(String contact){ 
    Intent i=new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+contact)); 
    getActivity().startActivity(i); 
    } 
} 
+0

Non, je suis assez sûr que j'ai suivi l'ordre de la pièce jointe comme mentionné dans ma question. Aussi j'ai seulement ajouté le fragment A, reste tous les fragments que j'ai utilisés pour remplacer la méthode. – Krishna

+1

pouvez-vous poster le code où vous initiez l'intention d'appel, aussi je veux jeter un oeil à vos autorisations. – himanshu1496

+0

Pourriez-vous s'il vous plaît partager du code? –

Répondre

0

Retirer getActivity() et appeler directement startActivity (i)

Des fragments ont sa propre startActivity(). Vous n'avez pas besoin de passer le contexte ou la référence d'activité dans ce cas. Pour plus d'informations: Click here

+1

Merci beaucoup pour la réponse opportune mate! J'apprécie beaucoup ! – Krishna