Pergunta

Criei um aplicativo no qual existem dois fragmentos e em ambos os fragmentos existem listviews.O primeiro listview no fragment1 está sendo rolado e os itens também estão sendo destacados.Mas no segundo fragmento, o listview não é rolado e até os itens não ficam destacados.Alguém pode me dizer qual é o problema?O problema aqui é que acabei de verificar isso colocando a mesma classe de fragmento em ambos os fragmentos em xml.Ou ambos deveriam funcionar ou ambos não deveriam, porque um não é diferente do outro.Mas por que esse problema ocorre?

Minha classe 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>
Foi útil?

Solução

Então, de acordo com o seu código, parece que você está se referindo ao mesmo Fragment1 class para ambos os fragmentos em seu main.xml.Presumo que sua classe de atividade contenha apenas o setContentView() no onCreate() método.Como ambos os fragmentos estão em uma única atividade, existe a possibilidade de que apenas uma visualização seja destacada inicialmente.Acabei de verificar isso, mas está funcionando bem. Just drag the listview in the second fragment, em vez disso, você pode estar rolando.Se você deseja que seu segundo listview seja destacado, temo que você possa precisar de arquivos xml separados (digamos fragment1 e fragment2) e classes separadas para os fragmentos e obter o foco no que você precisa primeiro adicionando o código a seguir.

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

boa sorte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top