0

Dans l'un de mes projets, j'utilise 2 fragments.Un fragment affiche une liste d'éléments.Alors je veux quand le sujet sera sélectionné dans le premier fragment, les détails doivent être changés dans un autre fragment.Data je suis capable de passer d'un fragment à l'autre mais la vue ne change pas.Dans quelle méthode je devrais implémenter la vue du deuxième fragment afin qu'il puisse changer en conséquence. S'il vous plaît donnez-moi un bon tutoriel ou un exemple pour ceux-ci.Passage de données d'un fragment au fragment suivant dans android

Ici, je dois développer un exemple android, je dois exécuter l'application signifie nom de catégorie affiché bien sur la liste horizontale de mon premier fragment.J'ai à cliquer sur une catégorie signifie comment puis-je passer le nom de la catégorie sur le second fragment. S'il vous plaît donnez-moi une solution à ce problème.

J'ai utilisé ci-dessous le code:

public class Home extends FragmentActivity{ 

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

1er code fragment:

public class MainActivity extends Fragment { 
static final String URL = "http://dev2.mercuryminds.com/webservices/new_feed_articls.xml"; 

static String KEY_CATEGORY = "Categories"; 

static final String KEY_TITLE = "Category"; 
LazyAdapter adapter; 

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.activity_main, 
       container, false); 


    final ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 
    XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(URL); // getting XML from URL 
     Document doc = parser.getDomElement(xml); // getting DOM element 

     NodeList nl = doc.getElementsByTagName(KEY_TITLE); 


     // looping through all song nodes &lt;song&gt; 
     for (int i = 0; i < nl.getLength(); i++) { 
      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String> (); 
      Element e = (Element) nl.item(i); 
      map.put(KEY_TITLE,((Element)nl.item(i)).getAttribute("name")); 

      // map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE)); 
      songsList.add(map); 
     } 
     HorizontalListView list = (HorizontalListView) view.findViewById(R.id.listView1); 
    adapter = new LazyAdapter(getActivity(), songsList); 
     list.setAdapter(adapter); 

     list.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      HashMap<String, String> map = songsList.get(position); 
      Intent in = new Intent(); 
      in.setClass(getActivity(), SubCate.class); 
      // in.putExtra(KEY_TITLE, map.get(KEY_TITLE)); 

        startActivity(in); 
     } 

    }); 
     return view; 
    }} 

Comment afficher le nom de la catégorie 2 sur l'activité ... merci de me donner le code pour ces ...

EDIT:

Salut je l'ai changé c ode comme sur ma première activité:

HashMap<String, String> map = songsList.get(position); 
      SubCate frag = (SubCate) getFragmentManager().findFragmentById(R.id.frag_2); 
      if (frag != null && frag.isInLayout()) { 
      frag.setText(getCapt(map)); 
      } 
      } 
      private String getCapt(HashMap<String, String> map) { 
      if (map.containsValue("notchbolly")) { 
      return "dadad"; 
      } 
       return "veeman"; 

sur l'activité suivante:

public void setText(String item) { 
TextView view = (TextView) getView().findViewById(R.id.cate); 
view.setText(item); 
    } 

son bien woked en mentionner directement le nom si (map.containsValue ("notchbolly")) mais je dois. afficher le nom sans mentionner directement le nom.Si je dois cliquer sur une catégorie signifie que le nom de la catégorie est affiché sur le prochain fragment.Comment puis-je faire ?????

Répondre

1

méthode d'interface à l'aide que nous pouvons transférer des données entre fragment à fragmenter

En Fragmenta créer l'interface et les données envoyées à cette interface et mettre en œuvre cette méthode d'interface fragmentB et obtenir les données nécessaires

le code suivant est utile pour vous

Code en FragmentA:

public class FragmentA extends Fragment { 

    // interface method 
    public InterfaceDataCommunicatorBetweenfragmentAToFragmentB  iInterfaceDataCommunicatorBetweenfragmentAToFragmentB; 

    // Data to send 
    String mDataString; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     // use this line where u send data 
     iInterfaceDataCommunicatorBetweenfragmentAToFragmentB.upDatedData(mDataString); 

     View view = inflater.inflate(R.layout.sent_box, container, false); 


     return view ; 
    } 

    /** 
     * Interface method to send data to fragmentB 
     * 
     */ 
     public interface InterfaceDataCommunicatorBetweenfragmentAToFragmentB          { 
      public void upDatedData(String data); 

     } 
    } 

code dans FragmentB:

class FragmentB extends Fragment implements InterfaceDataCommunicatorBetweenfragmentAToFragmentB { 

    // interface method 
    public InterfaceDataCommunicatorBetweenfragmentAToFragmentB iInterfaceDataCommunicatorBetweenfragmentAToFragmentB; 

    // fragmentA data 
    String mgetUpdatedData 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 


      View view = inflater.inflate(R.layout.get_box, container, false); 


     return view ; 
    } 

    /** 
    * Interface method coming from fragment a to fragmentB after implement interface in fragmentB 
    */ 
    public void upDatedData(String data) { 
     this.mgetUpdatedData = data; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     // TODO Auto-generated method stub 
     super.onAttach(activity); 
     try { 
      iInterfaceDataCommunicatorBetweenfragmentAToFragmentB = (InterfaceDataCommunicatorBetweenfragmentAToFragmentB) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement interface"); 
     } 

    } 
Questions connexes