Android 使用ViewPager打开不同的活动

Android 使用ViewPager打开不同的活动,android,android-fragments,Android,Android Fragments,我试图在片段中实现我的ViewPager,这样每个页面都可以打开不同的活动,但到目前为止,onClickListener没有响应,也没有调用它 下面是我如何在我的PagerAdapter下实现它的: @Override public Object instantiateItem(View collection, final int pos) { LayoutInflater inflater = (LayoutInflater) collection.getContext().getSy

我试图在
片段中实现我的
ViewPager
,这样每个页面都可以打开不同的活动,但到目前为止,onClickListener没有响应,也没有调用它

下面是我如何在我的
PagerAdapter
下实现它的:

@Override
public Object instantiateItem(View collection, final int pos) {
    LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View page = inflater.inflate(R.layout.activity_jeans, null);

    page.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getActivity(),JeansActivity.class));
        }
    });

    ((ViewPager) collection).addView(page, 0);
    return page;
}
我正在阅读about
ViewPager
,但找不到关于如何正确实现它的任何帮助

以下是我的
片段
菜单中的全部代码:

更新代码

import android.content.Context;
import android.content.Intent;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.widget.ImageView;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;

import java.util.List;
import java.util.ArrayList;

/**
 * Created by WiLo on 2/13/2015.
 */
public class FmMenu extends Fragment {

    int[] imagenes = {
            R.drawable.jeans,
            R.drawable.blusas,
            R.drawable.leggings,
    };

    SectionsPagerAdapter mSectionsPagerAdapter;
    ViewPager mViewPager;

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

        View rootView = inflater.inflate(R.layout.lay_menufragment, container, false);

        //galeria de imagenes

        mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());

        mViewPager = (ViewPager) rootView.findViewById(R.id.pager);
        mSectionsPagerAdapter.addfragments(PlaceholderFragment.newInstance(imagenes[0]));
        mSectionsPagerAdapter.addfragments(PlaceholderFragment.newInstance(imagenes[1]));
        mSectionsPagerAdapter.addfragments(PlaceholderFragment.newInstance(imagenes[2]));

        mViewPager.setAdapter(mSectionsPagerAdapter);

        return rootView;


    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        List<Fragment> fragmentos;
        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
            fragmentos = new ArrayList<Fragment>();
        }

        public void addfragments(Fragment xfragment){
            fragmentos.add(xfragment);
        }


        @Override
        public Fragment getItem(int position) {
            return fragmentos.get(position);
        }

        @Override
        public int getCount() {
            return fragmentos.size();
        }



    }


    public static class PlaceholderFragment extends Fragment implements View.OnClickListener {

        private static final String ARG_IMAGE = "imagen";
        private int imagen;

        public static PlaceholderFragment newInstance(int imagen) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_IMAGE, imagen);
            fragment.setArguments(args);
            fragment.setRetainInstance(true);
            return fragment;
        }

        public void onClick(View v){

        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if(getArguments() != null) {
                imagen = getArguments().getInt(ARG_IMAGE);
            }
        }

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_menu, container, false);

            ImageView jeans = (ImageView) rootView.findViewById(R.id.imageView1);
            jeans.setImageResource(imagen);

            jeans.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    startActivity(new Intent(getActivity(),JeansActivity.class));

                }

            });

            return rootView;
        }
    }

}
导入android.content.Context;
导入android.content.Intent;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.widget.ImageView;
导入android.support.v4.app.Fragment;
导入android.os.Bundle;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.view.OnClickListener;
导入java.util.List;
导入java.util.ArrayList;
/**
*由WiLo于2015年2月13日创建。
*/
公共类FmMenu扩展了片段{
int[]图像={
R.drawable.牛仔裤,
R.drawable.blusas,
R.可拉伸绑腿,
};
分段SPAGERADAPTER mSectionsPagerAdapter;
ViewPager mViewPager;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.lay_菜单,容器,假);
//伊曼涅斯方铅矿
mSectionsPagerAdapter=新的SectionsPagerAdapter(getChildFragmentManager());
mViewPager=(ViewPager)rootView.findViewById(R.id.pager);
mSectionsPagerAdapter.addfragments(占位符fragment.newInstance(imagenes[0]);
mSectionsPagerAdapter.addfragments(占位符fragment.newInstance(imagenes[1]);
mSectionsPagerAdapter.addfragments(占位符fragment.newInstance(imagenes[2]);
mViewPager.setAdapter(mSectionsPagerAdapter);
返回rootView;
}
公共类节SpagerAdapter扩展了FragmentPagerAdapter{
列出碎片;
公共部分SpagerAdapter(碎片管理器fm){
超级(fm);
fragmentos=新的ArrayList();
}
公共void addfragments(fragmentxfragments){
添加(xfragments);
}
@凌驾
公共片段getItem(int位置){
返回fragmentos.get(位置);
}
@凌驾
public int getCount(){
返回fragmentos.size();
}
}
公共静态类占位符片段扩展片段实现View.OnClickListener{
私有静态最终字符串ARG_IMAGE=“imagen”;
私有int图像;
公共静态占位符片段newInstance(int imagen){
占位符片段=新占位符片段();
Bundle args=新Bundle();
args.putInt(ARG_图像,imagen);
fragment.setArguments(args);
fragment.setRetainInstance(真);
返回片段;
}
公共void onClick(视图v){
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
如果(getArguments()!=null){
imagen=getArguments().getInt(ARG_IMAGE);
}
}
公共占位符片段(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u菜单,容器,false);
ImageView=(ImageView)rootView.findViewById(R.id.imageView1);
jeans.setImageResource(imagen);
jeans.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
startActivity(新意图(getActivity(),JeansActivity.class));
}
});
返回rootView;
}
}
}
如有任何帮助或参考任何其他文件,将不胜感激


谢谢

占位符片段
onCreateView()
回调中,您只需检查
片段
参数上的图像id。使用该资源id,您可以根据该值启动
活动

jeans.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

        Intent activityIntent = new Intent();

        Intent intent = new Intent();

        switch(imagen){
        case R.drawable.jeans:
            intent = new Intent(getActivity(), JeansActivity.class);
            break;
        case R.drawable.blusas:
            intent = new Intent(getActivity(), BlusasActivity.class);
            break;
            R.drawable.leggings:
                intent = new Intent(getActivity(), LegginsActivity.class);
            break;
        }

        startActivity(intent);
    }
});

您是否使用
PlaceholderFragment
实例作为
ViewPager
页面?如果是,您必须使这些片段中的每一个都实现View.onClickListener接口,以便捕获其中的单击。感谢您的回复。请原谅我的菜鸟问题,但我该怎么做呢?我是通过我的公共静态类
placeholder Fragment
还是在我的
onCreateView
方法下添加View.onClickListener吗?只需将片段的类声明更改为
public static class placeholder Fragment extends Fragment implements View.onClickListener{
并实现OnClick()callback.On
onCreateView()
,为要单击以打开新的
活动的视图定义一个ClickListener。好的,尝试一下,我会让您知道它是如何运行的。谢谢!@joao2fast4u感谢您的帮助!能够实现
onClick
,它工作正常,但每次我单击
查看页面中的任何图像时,它都会将我发送到同样的
活动
。如何将它们单独定义为其
活动
?我的意思是,我是否为它们每个定义了一个
ClickListener
?顺便说一下,我在我的帖子中更新了代码,这样你就可以看到了。看起来它缺少
R.drawable.leggings:
之前的
case
关键字。