Domanda

Ho creato un'app in cui ci sono due frammenti e in entrambi i frammenti sono listviews.Il primo elenco di lista nel frammento1 viene scartato e gli articoli vengono anche evidenziati.Ma nel secondo frammento, la ListView non è scrollata e anche gli articoli non vengono evidenziati.Qualcuno può dirmi qual è il problema?La cosa qui è che ho appena controllato questo con la stessa classe di frammenti per entrambi i frammenti in XML.O entrambi dovrebbero funzionare o che entrambi non dovrebbero perché uno non è diverso dall'altro.Ma perché questo problema si verifica?

My framment Class:

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>
.

frammento1.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>
.

È stato utile?

Soluzione

Allora, come per il tuo codice sembra che ti riferisca lo stesso Fragment1 class ad entrambi i frammenti nel main.xml.Suppongo che la tua classe di attività contenga solo il SetContentView () nel metodo OnCreate () .Poiché entrambi i frammenti sono su una singola attività, c'è la possibilità che solo una vista viene evidenziata inizialmente.Ho appena controllato questo, ma sta funzionando bene.Just drag the listview in the second fragment, Piuttosto potresti averlo scorrevole.Se desideri che il tuo secondo elenco venisse evidenziato, temo che potresti aver bisogno di file XML separati (diciamo frammento1 e frammento2) e lezioni separate per i frammenti e ottenere la messa a fuoco su cui è necessario prima aggiungere prima il seguente codice.

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

Buona fortuna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top