在我的应用程序中,我有Fragment
,其中包含GridView
和ListView
以使用CursorAdapter
显示项目。这两个视图中只有一个被启用,用户可以选择他想要查看项目的方式。
所以,我onCreateView
的{{1}}方法
Fragment
gv = (GridView) v.findViewById(R.id.itemselect_gridview);
lv = (ListView) v.findViewById(R.id.itemselect_listview);
if (!UserPreferences.isViewStyleGrid(getActivity())) {
showList();
} else {
showGrid();
}
和showList
的代码是:
showGrid
当应用程序调用{{1}}时,我无法使用d-pad(游戏控制器)导航private void showList() {
gv.setVisibility(View.GONE);
lv.setVisibility(View.VISIBLE);
UserPreferences.getPreferences(getActivity()).edit()
.putString(Constants.VIEWSTYLE, "list").commit();
}
private void showGrid() {
lv.setVisibility(View.GONE);
gv.setVisibility(View.VISIBLE);
UserPreferences.getPreferences(getActivity()).edit()
.putString(Constants.VIEWSTYLE, "grid").commit();
}
。按d-pad键无效,只有触摸输入有效。
如果应用程序调用{{1}},则d-pad正常工作。
如果我在运行时从网格切换到列表,dpad也可以在showList
上正常工作,切换使用前面提到的相同方法。什么可能导致这个问题?我尝试使用ListView
和showGrid
但没有结果。
答案 0 :(得分:0)
我意识到现在拨打showGrid
和showList
为时尚早,所以我稍微更改了onCreateView
:
if (UserPreferences.isViewStyleGrid(mFragment.getActivity())) {
gv.post(new Runnable() {
@Override
public void run() {
showGrid();
}
});
} else {
lv.post(new Runnable() {
@Override
public void run() {
showList();
}
});
}
这样,在完全初始化视图后调用这两个函数。