Pregunta

Creé una aplicación en la que hay dos fragmentos y en ambos fragmentos hay vistas de lista.La primera vista de lista en el fragmento1 se desplaza y los elementos también se resaltan.Pero en el segundo fragmento, la vista de lista no se desplaza e incluso los elementos no se resaltan.¿Alguien puede decirme cuál es el problema?Lo que pasa aquí es que acabo de comprobar esto al poner la misma clase de fragmento en ambos fragmentos en xml.O ambos deberían funcionar o ambos no deberían funcionar porque uno no es diferente del otro.Pero ¿por qué ocurre este problema?

Mi clase de fragmento:

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();
    }

}

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

fragmento1.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>
¿Fue útil?

Solución

Entonces, según tu código parece que te refieres a lo mismo Fragment1 class a ambos fragmentos en tu main.xml.Supongo que su clase de actividad solo contiene el establecerContentView() en el enCrear() método.Como ambos fragmentos pertenecen a una sola actividad, existe la posibilidad de que inicialmente solo se resalte una vista.Acabo de comprobar esto, pero funciona bien. Just drag the listview in the second fragment, más bien podrías haberlo estado desplazándote.Si desea que se resalte su segunda vista de lista, me temo que es posible que necesite archivos xml separados (por ejemplo, fragmento1 y fragmento2) y clases separadas para los fragmentos y centrarse en lo que necesite primero agregando el siguiente código.

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

buena suerte.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top