Google TV:使用两个片段列表之间的键盘D'Pad更改导航

时间:2011-11-03 09:49:07

标签: android android-fragments google-tv

我正在为android制作应用程序。我有一个Activity,里面有两个fragmentList。向左或向右移动DPAD时,我想控制您在下面的片段列表中的位置。例如,想要在DPAD上的siguiende按下Right的第8位转到第一个片段列表的第4位。

尝试更好地解释:

我正在申请GoogleTV,因此键盘处理非常重要。我有两个带有项目的片段列表。 OnItemSelectedListener我正在使用,以便当一个项目具有焦点时,也按下。当fragmentlist1改变位置时,fragmentList2改变。当我在FragmentList2中的第3项时,我离开了键脉冲。我想返回fragmentLis1的第1项。默认值为fragmentList1的第3项。

添加了片段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;
    }       
}

会像Fragmentlists之间的nextfocusleft吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

在Activity中,我将为FragmentList1中的位置创建一个成员变量,并使用可以处理任何默认值或特殊业务逻辑的getter函数对其进行包装。

然后,我将创建一个onKeyUp侦听器,如果我从FragmentList2中检测到LEFT,则拦截它并根据需要进行修改。