Question

J'ai créé une application dans laquelle il y a deux fragments et dans les deux fragments il y a des vues de liste.La première vue de liste du fragment1 défile et les éléments sont également mis en surbrillance.Mais dans le deuxième fragment, la liste ne défile pas et même les éléments ne sont pas mis en surbrillance.Quelqu'un peut-il me dire quel est le problème ?Le problème ici est que je viens de vérifier cela en mettant la même classe de fragments sur les deux fragments en XML.Soit les deux devraient fonctionner, soit les deux ne devraient pas fonctionner, car l’un n’est pas différent de l’autre.Mais pourquoi ce problème se produit-il ?

Ma classe de fragments :

public class Fragment1 extends ListFragment{

    String[] countries = new String[] {
        "India",
        "Pakistan",
        "Sri Lanka",
        "China",
        "Bangladesh",
        "Nepal",
        "Afghanistan",
        "North Korea",
        "South Korea",
        "Japan"
    };

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.fragment1,container,false);
    }
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,countries);
        setListAdapter(adapter);
    }

    public void onListItemClick(ListView parent, View v,int position, long id)
    {
        Toast.makeText(getActivity(), "You have selected "+countries[position], Toast.LENGTH_SHORT).show();
    }

}

main.xml :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <fragment
        android:name="com.example.listfragmentexample.Fragment1"
        android:id="@+id/fragment1"
        android:layout_weight="0.5"
        android:layout_width="0dp"
        android:layout_height="200dp" />

    <fragment 
        android:name="com.example.listfragmentexample.Fragment1"
        android:id="@+id/fragment2"
        android:layout_weight="0.5"
        android:layout_width="0dp"
        android:layout_height="300dp"/>
</LinearLayout>

fragment1.xml :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:drawSelectorOnTop="false"/>

</LinearLayout>
Était-ce utile?

La solution

Donc, d'après votre code, il semble que vous fassiez référence à la même chose Fragment1 class aux deux fragments de votre main.xml.Je suppose que votre classe d'activité contient uniquement le setContentView() dans le onCréer() méthode.Comme les deux fragments concernent une seule activité, il est possible qu’une seule vue soit mise en surbrillance initialement.Je viens de vérifier cela, mais cela fonctionne bien. Just drag the listview in the second fragment, vous auriez plutôt pu le faire défiler.Si vous souhaitez que votre deuxième vue de liste soit mise en surbrillance, je crains que vous ayez besoin de fichiers XML séparés (par exemple fragment1 et fragment2) et de classes distinctes pour les fragments et que vous vous concentriez sur ce dont vous avez besoin en premier en ajoutant le code suivant.

listView1 = (ListView)findViewById(R.id.listView1);
listView1.requestFocus();

bonne chance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top