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;
}
我正在阅读aboutViewPager
,但找不到关于如何正确实现它的任何帮助
以下是我的片段
菜单中的全部代码:
更新代码
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.OnonCreateView()
,为要单击以打开新的活动的视图定义一个ClickListener。好的,尝试一下,我会让您知道它是如何运行的。谢谢!@joao2fast4u感谢您的帮助!能够实现onClick
,它工作正常,但每次我单击查看页面中的任何图像时,它都会将我发送到同样的活动
。如何将它们单独定义为其活动
?我的意思是,我是否为它们每个定义了一个ClickListener
?顺便说一下,我在我的帖子中更新了代码,这样你就可以看到了。看起来它缺少R.drawable.leggings:
之前的case
关键字。