второй просмотр списка в фрагменте списка не прокручивается

StackOverflow https://stackoverflow.com//questions/12670102

Вопрос

Я создал приложение, в котором есть два фрагмента, и в обоих фрагментах есть списки.Первое представление списка во фрагменте 1 прокручивается, а элементы также выделяются.Но во втором фрагменте список не прокручивается и даже элементы не подсвечиваются.Может кто-нибудь сказать мне, в чем проблема?Дело в том, что я только что проверил это, поместив один и тот же класс фрагмента в оба фрагмента в xml.Либо они оба должны работать, либо оба не должны, потому что одно ничем не отличается от другого.Но почему возникает эта проблема?

Мой класс фрагмента:

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

}

основной.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>

фрагмент1.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>
Это было полезно?

Решение

Итак, согласно вашему коду, кажется, что вы имеете в виду одно и то же Fragment1 class к обоим фрагментам в вашем main.xml.Я предполагаю, что ваш класс активности просто содержит setContentView() в onCreate() метод.Поскольку оба фрагмента относятся к одному действию, существует вероятность того, что изначально будет выделено только одно представление.Я только что проверил это, но все работает нормально. Just drag the listview in the second fragment, скорее, вы, возможно, прокручивали его.Если вы хотите, чтобы ваше второе представление списка было выделено, я боюсь, что вам могут понадобиться отдельные XML-файлы (скажем, фрагмент1 и фрагмент2) и отдельные классы для фрагментов, и вы сможете сосредоточиться на том, что вам нужно в первую очередь, добавив следующий код.

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

удачи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top