Frage

Ich habe eine App erstellt, in der es zwei Fragmente gibt und in beiden Fragmenten Listenansichten vorhanden sind.Die erste Listenansicht im Fragment1 wird gescrollt und die Elemente werden ebenfalls hervorgehoben.Aber im zweiten Fragment wird die Listenansicht nicht gescrollt und nicht einmal die Elemente werden hervorgehoben.Kann mir jemand sagen, was das Problem ist?Die Sache hier ist, dass ich das gerade überprüft habe, indem ich beiden Fragmenten in XML die gleiche Fragmentklasse hinzugefügt habe.Entweder sollten beide funktionieren oder beide nicht, weil sich das eine nicht vom anderen unterscheidet.Aber warum tritt dieses Problem auf?

Meine Fragmentklasse:

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>
War es hilfreich?

Lösung

Laut Ihrem Code scheinen Sie sich also auf dasselbe zu beziehen Fragment1 class zu beiden Fragmenten in Ihrem main.xml.Ich gehe davon aus, dass Ihre Aktivitätsklasse nur das enthält setContentView() im onCreate() Methode.Da es sich bei beiden Fragmenten um eine einzelne Aktivität handelt, besteht die Möglichkeit, dass zunächst nur eine Ansicht hervorgehoben wird.Ich habe das gerade überprüft, aber es funktioniert gut. Just drag the listview in the second fragment, Vielmehr hätten Sie möglicherweise gescrollt.Wenn Sie möchten, dass Ihre zweite Listenansicht hervorgehoben wird, befürchte ich, dass Sie möglicherweise separate XML-Dateien (z. B. Fragment1 und Fragment2) und separate Klassen für die Fragmente benötigen und sich auf das konzentrieren, was Sie zuerst benötigen, indem Sie den folgenden Code hinzufügen.

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

viel Glück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top