java - Intent putExtra 从 PagerAdapter 到 Fragment

标签 java android android-intent android-fragments

我需要获取从 SliderHome.java 中的 ThePagerAdapter.java 传递的值。我该如何实现?我已经尝试了很多,但都没有成功。

这是我的代码:

ThePagerAdapter.java

public class ThePagerAdapter extends PagerAdapter {
Context context;

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

@Override
public boolean isViewFromObject(View view, Object object) {
    return view == ((RelativeLayout) object);
}

public ThePagerAdapter(Context context,List<Slider> list) {
    this.list = list;
    this.context = context;
}

@Override
public Object instantiateItem(final ViewGroup container, int position) {
    // Declare Variables
    ImageView imgflag;

    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View itemView = inflater.inflate(R.layout.image_item, container, false);

    // Capture position and set to the TextViews
    final String id =  list.get(position).getId();

    imgflag = (ImageView) itemView.findViewById(R.id.imageView);

    imgflag.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            Intent i = new Intent(context, SliderMore.class);
            i.putExtra("slider_id", id);
            context.startActivity(i);
        }
    });

    ((ViewPager) container).addView(itemView);

    return itemView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    // Remove viewpager_item.xml from ViewPager
    ((ViewPager) container).removeView((RelativeLayout) object);

}
}

从上面的 PagerAdapter 我使用 Intent.putExtra 将值发送到下面描述的另一个 Fragment

SliderHome.java

public class SliderHome extends Fragment {

ViewPager viewPager;
ImageView iv2,iv3;
String slider_id;

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

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

    viewPager = (ViewPager) rootView.findViewById(R.id.viewPager);
    iv2 = (ImageView) rootView.findViewById(R.id.imageView2);
    iv3 = (ImageView) rootView.findViewById(R.id.imageView3);

    return rootView;
}

有解决办法吗?提前致谢。

最佳答案

在这种情况下,我喜欢使用工厂方法模式。

示例:

public static MatchDetailSummaryFragment newInstance(String matchIdString, int position) {
    MyFragment fragment = new MyFragment();
    Bundle args = new Bundle();
    args.putString(ARGS_MY_ID, matchIdString);
    args.putInt(ARG_POSITION,position);
    fragment.setArguments(args);
    return fragment;
}

public MyFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.mPosition = getArguments().getInt(ARG_POSITION);
    this.id = getArguments().getString(ARGS_MY_ID) != null)
}

你可以调用这个:

public void fillMyPagerAdapter()
{

    mChildFragments = new Hashtable<Integer,GxuBaseFragment>();
    int count = 0;

        MyFragment a = MyFragment.newInstance(Integer.toString(my.getId()),count);
        mChildFragments.put(count,a);
        count += 1;

    mViewPagerAdapter.setTabHolderScrollingContent(this);
    mPager.setAdapter(mViewPagerAdapter);
    mPagerSlidingTabStrip.setViewPager(mPager);
    mPagerSlidingTabStrip.setOnPageChangeListener(this);

}

此代码可能无法运行,因为它是我的生产代码的几个摘录,但它会解释主要思想。

关于java - Intent putExtra 从 PagerAdapter 到 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875038/

相关文章:

android - 将加载指示器/进度条添加到 Phonegap Android 闪屏

android - 如何使用 Intent 在 Android 上选择文件

java - 电话验证凭证

java - 刷新 Spring ApplicationContext,而不重新初始化上下文,可能吗?

java - 为什么在 java 中使用 ExecutorService 在 exec.shutdown() 之前使用 exec.isTermminate() ?

java - Android静态库方法无法调用

android - 如何修复 Android 模拟器中的 "Fail to connect to camera service"异常

java - 如何等待 GUI 的输入返回到主程序?

java - 从与应用程序相同的 JAR 文件中引用文件

java - Android SDK public void 获取错误