Android 在使用FragmentTabsPager兼容性库示例时,我应该在哪些内容上替换选项卡中的片段?
我会尽量简明扼要 观察下面的屏幕截图: 我如何实现这样一种方式,当我按下这个ListView上的一个项目时,片段被替换为一个新片段,其中包含相应播放器的数据?我应该替换FrameLayout选项卡content的内容吗?如果是,如何确保ViewPager仍能正常工作 “基本活动”的XML:Android 在使用FragmentTabsPager兼容性库示例时,我应该在哪些内容上替换选项卡中的片段?,android,android-listview,android-fragments,android-viewpager,Android,Android Listview,Android Fragments,Android Viewpager,我会尽量简明扼要 观察下面的屏幕截图: 我如何实现这样一种方式,当我按下这个ListView上的一个项目时,片段被替换为一个新片段,其中包含相应播放器的数据?我应该替换FrameLayout选项卡content的内容吗?如果是,如何确保ViewPager仍能正常工作 “基本活动”的XML: 这是创建的OnActivity: @Override public void onActivityCreated(Bundle savedInstance) { supe
这是创建的OnActivity:
@Override
public void onActivityCreated(Bundle savedInstance)
{
super.onActivityCreated(savedInstance);
setHasOptionsMenu(true);
listView = (ListView)getActivity().findViewById(R.id.lv_federations);
listView.setVisibility(View.GONE);
if (savedInstance == null)
{
new PullFederationDataTask().execute();
}
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3)
{
// Replace Fragment
}
});
}
@覆盖
已创建活动上的公共void(Bundle savedInstance)
{
super.onActivityCreated(savedInstance);
设置选项菜单(真);
listView=(listView)getActivity().findViewById(R.id.lv_联合体);
setVisibility(View.GONE);
if(savedInstance==null)
{
新建PullFederationDataTask().execute();
}
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、,
整数位置,长arg3)
{
//替换片段
}
});
}
我该怎么办?我不确定是否要将
侦听器中的片段替换为您的代码中的片段,因为我正在努力解决同样的问题,而且还没有找到合适的解决方案
如果您通过扩展列表片段
来实现播放器列表,则可以使用显示播放器详细信息的新片段替换当前片段(或者您可以启动新活动,但我将在本回答中讨论片段事务)
要替换片段,可以在onListItemClick
方法中创建一个新片段,该方法将单击列表项的ID作为片段构造函数的参数:
@Override
public void onListItemClick (ListView l, View v, int position, long id) {
// Here I assume that the fragment containing the player details
// is called PlayerDetailFragment.
// The id of the item that was clicked is passed to the fragment's constructor.
Fragment newFragment = new PlayerDetailFragment(id);
FragmentTransaction ft = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack.
// android.R.id.content refers to the id of the root ViewGroup.
ft.replace(android.R.id.content, newFragment);
ft.addToBackStack(null);
// Commit the transaction
ft.commit();
}
您可以使用ListAdapter的getItemId()
方法来引用播放器的ID。使用ListView.setAdapter()
方法将您自己的ListAdapter
用于ListView
。ListAdapter
负责维护支持此列表的数据,并生成表示该数据集中某项的视图。本教程介绍如何为列表视图
编写自己的ArrayAdapter
在ListAdapter
中,覆盖getItemId()
方法并返回播放器的ID。然后,PlayerDetailFragment
可以获取id从数据库检索数据
我没有使用ViewPagers的经验,所以对此我无能为力
@Override
public void onListItemClick (ListView l, View v, int position, long id) {
// Here I assume that the fragment containing the player details
// is called PlayerDetailFragment.
// The id of the item that was clicked is passed to the fragment's constructor.
Fragment newFragment = new PlayerDetailFragment(id);
FragmentTransaction ft = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack.
// android.R.id.content refers to the id of the root ViewGroup.
ft.replace(android.R.id.content, newFragment);
ft.addToBackStack(null);
// Commit the transaction
ft.commit();
}