2016-07-09 3 views
0

Je crois que la réponse est yes..Not que FragmentManager applique here..because un fragment contient un ListView et l'autre contient différents widgets (ImageView, texte)Est-il possible d'appeler un fragment d'un fragment

au sein mon activité principale i appeler mon 1er fragment en utilisant:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    LFragment lFragment= (LFragment)getSupportFragmentManager().findFragmentByTag("lFragment"); 
    if(lFragment==null){ 
     lFragment= new LFragment(); 
     FragmentTransaction transaction=getSupportFragmentManager().beginTransaction(); 
     transaction.add(android.R.id.content,lFragment,"lFragment"); 
     transaction.commit(); 
    } 

Bon alors une fois que je suis dans mon LFragment (1er fragment) classe i utilise cette méthode pour aller au fragment suivant:

//handling item click 
public void onListItemClick(ListView l, View view, int position, long id){ 
    ViewGroup viewGroup=(ViewGroup)view; 
    TextView txt=(TextView)viewGroup.findViewById(R.id.txtitem); 
    int itemPosition = position; 
    //stores the text of the clicked item in the list 
    String value = (String) l.getItemAtPosition(position); 
    //using intent to get into infoFragment 
    Intent intent = new Intent(view.getContext(),infoFragment.class); 
    //store string value into intent 
    intent.putExtra(value,itemPosition); 

    view.getContext().startActivity(intent); 
    //kills the fragment 
    getActivity().finish(); 

C'est ce que j'ai essayé d'utiliser (2ème Fragment) .. mais getIntent ne fonctionne pas

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.info_layout, container, false); 
} 
@Override 
public void onViewCreated(View view, Bundle savedInstanceState){ 
    ImageView image = (ImageView) view.findViewById(R.id.imageView); 
    RatingBar rating=(RatingBar) view.findViewById(R.id.ratingBar); 
    TextView degrees=(TextView)view.findViewById(R.id.textView); 
    //ERROR "can not resolve method getIntent" 
    Intent intent = getIntent(); 
} 
+0

Je suggère d'utiliser une interface et de transmettre vos données par là, donc l'activité gère le remplacement du fragment. – Raykud

+0

Auriez-vous une référence que je pourrais regarder s'il vous plaît? Aussi cela signifierait-il que je devrais changer comment j'appelle mon 1er fragment dans l'activité principale ou juste la méthode onClickList? – nameishi

+0

@Raykud Merci je vois ce que vous voulez dire maintenant – nameishi

Répondre

0

Essayez celui-ci ...

LFragment fragment = new LFragment(); 
FragmentManager FM = getActivity().getSupportFragmentManager(); 
android.support.v4.app.FragmentTransaction fragmentTransaction = FM.beginTransaction(); 
fragmentTransaction.replace(R.id.fragment_container, fragment); 
fragmentTransaction.commit();