Android 在使用FragmentTabsPager兼容性库示例时,我应该在哪些内容上替换选项卡中的片段?

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

我会尽量简明扼要

观察下面的屏幕截图:

我如何实现这样一种方式,当我按下这个ListView上的一个项目时,片段被替换为一个新片段,其中包含相应播放器的数据?我应该替换FrameLayout选项卡content的内容吗?如果是,如何确保ViewPager仍能正常工作

“基本活动”的XML:


这是创建的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();    
}