2017-10-15 2 views
0

Ci-dessous le code de ma première tentative de configuration d'un fragment de liste qui clique sur une activité (juste comme un test). J'ai suivi l'exemple des docs Android à: List Fragment ExampleOnListItemClick affiche comme "jamais utilisé"

Cependant, onListItemClick indique «jamais utilisé». Quand je lance l'application ma liste apparaît, mais quand je clique sur les éléments qu'il contient, je viens d'obtenir ce qui suit est retourné:

D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN

Le XML:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="com.example.administrationuser.piclo.ListViewFragment" 
     tools:showIn="@layout/activity_list_view" 
     tools:layout_editor_absoluteY="0dp" 
     tools:layout_editor_absoluteX="0dp" 
     > 

    <FrameLayout 
     android:id="@+id/list_container_id" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     tools:layout_editor_absoluteY="8dp" 
     tools:layout_editor_absoluteX="8dp"> 

     <ListView 
      android:id="@android:id/list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:drawSelectorOnTop="false" > 
     </ListView> 

    </FrameLayout> 

</android.support.constraint.ConstraintLayout> 

Et voici le fragment de la liste:

package com.example.administrationuser.piclo; 

import android.app.Activity; 
import android.content.Intent; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListAdapter; 



public class ListViewFragment extends ListFragment { 

    public ListViewFragment() {} 

     String[] myStringArray = new String[]{"aa","bbb","ccccc","dddddd"}; 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 

      // Populate list with our static array of titles. 
      setListAdapter(new ArrayAdapter<String>(getActivity(), 
        android.R.layout.simple_list_item_activated_1, myStringArray)); 
     } 


    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     showDetails(position); 
    } 

     void showDetails(int index) { 

      int mCurCheckPosition = index; 
      Intent intent = new Intent(); 
      intent.setClass(getActivity(), MessageDetails.class); 

      intent.putExtra("Inty", mCurCheckPosition); 
      startActivity(intent); 

      startActivity(intent); 
      } 

} 

Répondre

0

J'ai résolu le problème. Il est trivial et semble évident pour tout développeur Android chevronné, mais ici, il est pour les débutants qui peuvent tomber dans ce piège ....

... ne nommez pas votre activité parente 'ListView'. .. il confond le contournement OnListItemClick car il ne sait pas quelle classe de ListView il devrait écraser ... l'actuel ou celui que vous avez malheureusement créé par le pire choix possible de nom pour votre activité parent.