GoogleTV: изменение навигации с помощью клавиатуры Dpad между двумя списками фрагментов

Делаю приложение для андроид. У меня есть активность и в ней два фрагмента. При перемещении DPAD влево или вправо я хочу контролировать, в какой позиции вы находитесь в списке фрагментов ниже. Например, если вы хотите перейти к позиции 4 первого списка фрагментов в позиции 8, нажмите «Вправо» на DPAD.

Попробуйте объяснить лучше:

Я делаю приложение для GoogleTV, поэтому работа с клавиатурой очень важна. У меня есть два фрагмента с элементами. OnItemSelectedListener я использую так, что когда элемент имеет фокус, он также нажимается. Когда фрагментный список1 меняет позицию, фрагментный список2 изменяется. Когда я нахожусь в Пункте 3 в FragmentList2, то я оставил ключевой импульс. Я хочу вернуться к пункту 1 фрагментаLis1. По умолчанию используется элемент 3 для fragmentList1.

Добавлен код фрагмента 1.

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    listView.setItemChecked(position, true);
    listView.setSelection(position);
    changeItem(position);   
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    listView.setItemChecked(position, true);
    listView.setSelection(position);
    changeItem(position);   
}

public void changeItem(int position){

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();       
    Fragment1 f1 = new Fragment1();
    Fragment2 f2 = new Fragment2();

    switch (position) {
    case 0:
        transaction.replace(R.id.second_fragment, f1);
        transaction.addToBackStack(null);
        transaction.commit();
        break;
    case 1:
        transaction.replace(R.id.second_fragment, f2);
        transaction.addToBackStack(null);
        transaction.commit();
        break;
    default:
        break;
    }       
}

будет что-то вроде nextfocusleft между списками фрагментов?

Заранее спасибо.


person Community    schedule 03.11.2011    source источник
comment
интуитивное поведение — это переход от третьего элемента в левом списке к третьему элементу в правом списке на правой крестовине. Вот почему я упомянул в вашем предыдущем посте, чтобы объяснить вариант использования.   -  person Megha Joshi - GoogleTV DevRel    schedule 04.11.2011


Ответы (1)


В действии я бы создал переменную-член для позиции в FragmentList1 и обернул ее функцией-получателем, которая может обрабатывать любые значения по умолчанию или специальную бизнес-логику.

Затем я бы создал прослушиватель onKeyUp, и если я обнаружу LEFT из FragmentList2, перехватлю его и изменю по мере необходимости.

person Mark Phillip    schedule 04.11.2011