Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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 尝试访问新片段数据时调用旧片段_Android_Android Fragments - Fatal编程技术网

Android 尝试访问新片段数据时调用旧片段

Android 尝试访问新片段数据时调用旧片段,android,android-fragments,Android,Android Fragments,我有四个片段片段零,片段一,片段二,片段三。 除了数据之外,所有片段都有相同的代码。当我试图调用当前片段位置时,它正在调用前一个片段以及前一个数据。但是风景还行 例如: 从碎片零开始,一切都在运转 从片段一开始,它调用FragmentZero及其数据 直到我到达最后一个碎片。但是,在到达最后一个片段之后,一切都正常执行 以下是我的Java代码: public class FragmentZero extends Fragment { private int position = 0

我有四个片段
片段零
片段一
片段二
片段三
。 除了数据之外,所有片段都有相同的代码。当我试图调用当前片段位置时,它正在调用前一个片段以及前一个数据。但是风景还行

例如:

  • 从碎片零开始,一切都在运转
  • 从片段一开始,它调用FragmentZero及其数据
直到我到达最后一个碎片。但是,在到达最后一个片段之后,一切都正常执行

以下是我的Java代码:

public class FragmentZero extends Fragment {

    private int position = 0;
    private ImageView art;

    private static final String TAG = FragmentZero.class.getSimpleName();

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

        View root = inflater.inflate(R.layout.fragment_drawing, container, false);

        art = root.findViewById(R.id.alphabet_image);
        art.setTag(position);
        art.setImageResource(DrawingActivity.imageList.get(position));

        final TextView textView = root.findViewById(R.id.section_label);
        textView.setText(getString(R.string.section_title, position + 1));

        ImageView draw_icon0 = root.findViewById(R.id.draw_icon);
        draw_icon0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getContext(), ActivityDraw.class).putExtra("image_res", DrawingActivity.imageList.get((Integer) art.getTag())));
                Log.d(TAG, (Integer) art.getTag()+" from TAG");
            }
        });
        return root;
    }

}
以及onCreate代码:

SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(sectionsPagerAdapter);
适配器代码:

public class SectionsPagerAdapter extends FragmentPagerAdapter {
        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {

                switch (position) {
                    case 0:
                        return new FragmentZero();
                    case 1:
                        return new FragmentOne();
                    case 2:
                        return new FragmentTwo();
                    case 3:
                        return new FragmentThree();

                }


            return null;
        }

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

我正在尝试将
当前片段值
传递给下一个活动。

当您尝试将当前片段值传递给下一个活动时,可以从活动设置当前位置

声明一个变量

public static int currentPos = 0;
然后将当前值设置为

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                currentPos = position;
            }

            @Override
            public void onPageSelected(int position) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
现在从
片段调用当前位置
&使用
当前位置
从片段访问数据

希望你能得到正确的价值

startActivity(new Intent(getContext(), ActivityDraw.class).putExtra("image_res", DrawingActivity.imageList.get(currentPos)));