Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewPager中包含片段的ListView_Android_Android Fragments_Android Viewpager - Fatal编程技术网

Android ViewPager中包含片段的ListView

Android ViewPager中包含片段的ListView,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,当前我有一个ViewPager,它有3个不同的选项卡(对等、同步和共享)。 在对等片段中,它包含一个带有可单击项的列表视图。OnItemClick我想打开一个新片段,它将显示所选项目的详细信息, 但我不知道如何正确地实现这个功能 活动: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.file_shar

当前我有一个ViewPager,它有3个不同的选项卡(对等、同步和共享)。 在对等片段中,它包含一个带有可单击项的列表视图。OnItemClick我想打开一个新片段,它将显示所选项目的详细信息, 但我不知道如何正确地实现这个功能

活动:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.file_sharing_activity);

    // Tabs stuff ...
    this.tabsAdapter = new TabsPagerAdapter(this.getSupportFragmentManager());
    viewPager = (ViewPager) findViewById(R.id.pager);
    viewPager.setAdapter(this.tabsAdapter);

    // Create tabs bar
    final ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


    // Create tab fragments
    this.peerListFragment = new PeerListFragment();
    this.syncFragment = new SyncFragment();
    this.shareFragment = new ShareFragment();

    // Create tabs
    actionBar.addTab(actionBar.newTab().setText("Peers").setTabListener(this.peerListFragment));
    actionBar.addTab(actionBar.newTab().setText("Sync").setTabListener(this.syncFragment));
    actionBar.addTab(actionBar.newTab().setText("Share").setTabListener(this.shareFragment));

    viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            // When swiping between pages, select the
            // corresponding tab.
            getActionBar().setSelectedNavigationItem(position);
        }
    });

    try {

        ProgramController.getInstance().initializeProgram(this);

    } catch (Exception e) {}

}
TabPagerAdapter:

private class TabsPagerAdapter extends FragmentPagerAdapter{

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        switch (position) {
        case 0:
            return peerListFragment;
        case 1:
            return syncFragment;
        case 2:
            return shareFragment;

        default:
            return null;
        }
    }

    @Override
    public int getCount() {
        return NB_TABS;
    }
}
皮尔利斯特碎片

public class PeerListFragment extends Fragment implements ActionBar.TabListener{

ListView peerListView;

public PeerListFragment(){
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_peer_list, container, false);
    peerListView = (ListView) view.findViewById(R.id.list_peer);
    PeerListAdapter adapter = new PeerListAdapter(getActivity());

    peerListView.setAdapter(adapter);

    peerListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            //Display detail fragment here


        }
    });

    return view;
}
公共类PeerListFragment扩展片段实现ActionBar.TabListener{
ListView-peerListView;
公共PeerListFragment(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u peer\u list,container,false);
peerListView=(ListView)view.findViewById(R.id.list\u peer);
PeerListAdapter=新的PeerListAdapter(getActivity());
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//在这里显示细节片段
}
});
返回视图;
}

通常,您的
活动中会有一个方法,该方法将从
onItemClick()
调用以显示详细视图,即
showdail(itemId)
活动
实际上会处理到详细视图的转换

现在,由于您的
ViewPager
处于
活动中而不是
片段中,因此您有两种选择:

  • 拥有一个
    DetailActivity
    ,该活动以当前
    活动的
    意图开始(最简单的选择,但对于平板电脑来说灵活性较低)

  • 重写
    活动
    以将视图与
    查看页面
    放在
    片段
    中。然后
    活动
    将用细节片段替换当前包含
    查看页面
    的片段。(更难的选项,但您可以在平板电脑中并排显示)


现在,您的
ViewPager
已在您的活动布局中。为了使片段正常工作,您的活动布局将只有一个或两个子布局作为片段容器,然后
ViewPager
将进入片段布局。

只需启动显示详细信息的新活动。否?