Замените Fragment onItemClick с ViewPager в качестве его контейнера - PullRequest
1 голос
/ 27 марта 2012

Я хочу заменить фрагмент, содержащий список элементов, новым фрагментом в зависимости от того, на каком элементе щелкнули.Это мой код, как мне подойти к этому?Должен ли я объявить мой ListView, адаптер и тому подобное в onCreateView или onActivityCreated?Контейнер - это ViewPager, если это имеет значение.

public class PreferenceListFragment extends SherlockFragment 
{
    ListView lv;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)  {
        return (LinearLayout)inflater.inflate(R.layout.settings, container, false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        lv = (ListView)getView().findViewById(R.id.SettingsLV);
        lv.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, Preferences.TITLES));
        lv.setOnItemClickListener(new OnItemClickListener()
            {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                    Log.i("FragmentList", "Item clicked: " + arg2);
                    // Switch case that starts fragment depending on 'position'.

                    Fragment1 f1 = new Fragment1();
                    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
                    ft.replace(R.id.pager, f1);
                    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                    ft.addToBackStack(null);
                    ft.commit();     
                }
            }
        );
    }
}

Ссылка на какое-то очень странное поведение из моего приложения .

1 Ответ

0 голосов
/ 27 марта 2012

Настройка адаптера и просмотра списка должна быть выполнена в onActivityCreated. OnCreateView - это просто рисование пользовательского интерфейса в первый раз. Обработка должна быть в onActivityCreated (). См. http://developer.android.com/guide/topics/fundamentals/fragments.html

...