2017-10-01 2 views
0

Je travaille sur une application et il fonctionne très bien, mais il y a un problème qui se bloque quand je n'écris pas id dans mon fragment de code mais fonctionne bien après l'utilisation de l'attribut ID et le problème est que je n'ai pas utilisé est id partout dans mon applicationattribut d'attribut dans les fragments

Voici le fichier xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" 
> 
<fragment 
    class="com.hfad.workout.WorkoutList" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:id="@+id/listfrag" 
    /> 
<FrameLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:text="second text view" 
    android:layout_marginTop="20dp" 
    android:id="@+id/fragcont" 
    android:layout_weight="3" 
    /> 
    </LinearLayout> 

workoutlist.jav

public class WorkoutList extends ListFragment { 

    MainActivity ma; 
static interface WorkoutListListener{ 
void clickme(long at); 
} 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     ArrayAdapter<Workout> arrayAdapter = new ArrayAdapter<Workout>(
       inflater.getContext(), android.R.layout.simple_list_item_1, 
    Workout.workout); 
     setListAdapter(arrayAdapter); 

     return super.onCreateView(inflater, container, savedInstanceState); 
    } 
    @Override 
    public void onAttach(Context ac){ 
     super.onAttach(ac); 
     this.ma =(MainActivity) getActivity(); 

    } 

    public void onListItemClick(ListView v, View vi, int position, long id){ 
     ma.clickme(id); 

    } 
} 

Répondre

0

C'est parce que si vous ne spécifiez pas d'ID de fragment, FragmentManager ne peut pas le restaurer après recréation. Vous devez spécifier l'ID ou l'étiquette de fragment.

+0

si , ça ne marchera jamais ou ça se passe juste dans mon cas? –

+0

@ankitjoshi quel est le message de log, lorsque l'application se bloque –

+0

je ne me souviens pas, mais il est comme erreur dans le fichier binaire xml à la ligne ... et l'erreur gonfleur .... je ne suis pas sûr parce que j'ai utilisé l'attribut id après cela, –

0

Avant qu'une activité puisse parler à son fragment, l'activité doit d'abord utiliser pour obtenir une référence. Pour obtenir une référence au fragment, vous devez d'abord obtenir une référence au gestionnaire de fragments de l'activité à l'aide de la méthode getFragmentManager() de l'activité . Vous utilisez ensuite la méthode findFragmentById() pour obtenir une référence au fragment:

findFragmentById() est un peu comme findViewById() sauf que vous utilisez pour obtenir une référence à un fragment

getFragmentManager().findFragmentById(R.id.fragment_id) 
+0

@ neha mais dans mon application je n'utilise pas (R.id.listfrag)? –

+0

@ Joshi de ankit peut vous montrer votre code 'WorkoutList.java' –

+0

j'ai mis à jour que @neha –