构建我的第一个Android TV应用程序并且有点困惑。
我正在使用androidTV-leanback库。
根本问题:我有两个功能。一个用于返回上一个片段(使用popBackStackImmediate();
),另一个用于creatingLayout();
。两者都有效,但布局比我返回MainFragment(我可以看到导航抽屉)更快,这使得 BIG DELAY 。
我的解决方案(在想法中):当我获得特定导航抽屉标题项的焦点时,我可以简单地调用creatingLayout();
。
问题: 是否可以获得标题项焦点(项目名称/某种ID) - 按功能/ 插入您的解决方案?
我想知道每个用户移动活动标题项名称/ ID。 例如 - "类别3"。
https://i.imgur.com/YMv6JjU.png
这是正确思考我的问题吗?也许我可以使用另一种方法吗?
答案 0 :(得分:1)
通过在BrowseFragment中设置侦听器,当HeadersFragment项目(导航菜单项)获得焦点时,您会收到回调:
getHeadersSupportFragment().setOnHeaderViewSelectedListener(
new HeadersSupportFragment.OnHeaderViewSelectedListener() {
@Override
public void onHeaderSelected(RowHeaderPresenter.ViewHolder viewHolder, Row row) {
Toast.makeText(getActivity(), row.getHeaderItem().getName(), Toast.LENGTH_LONG).show();
}
}
);
答案 1 :(得分:0)
如果我正确理解您的问题,您想知道用户选择的特定类别的时间。在这种情况下,您可以检查您在主片段中设置的选定侦听器,如下所示:
private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
@Override
public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
RowPresenter.ViewHolder rowViewHolder, Row row) {
ListRow listRow = (ListRow)row;
if(listRow.getId() == 4)
{
//do something
}
}
}
你可以在将listrows添加到BrowserFragment ArrayAdpator时设置id,然后像我上面所说的那样检查它。
希望它有所帮助:)
答案 2 :(得分:0)
这就是我最终让它在最新的 BrowseSupportFragment 上工作的方式,将它放在 onItemViewSelectedListener 中。
getHeadersSupportFragment().setOnHeaderViewSelectedListener(
(viewHolder, row1) -> {
if (viewHolder.view.hasFocus()){
//Do stuff here
}else{
//Do other stuff here
}
setSelectedPosition(mRowsAdapter.indexOf(row1));
}
);