gpt4 book ai didi

android - 尝试访问新 fragment 数据时调用旧 fragment

转载 作者:行者123 更新时间:2023-11-29 22:55:36 24 4
gpt4 key购买 nike

我有四个 fragment FragmentZeroFragmentOneFragmentTwoFragmentThree。除数据外,所有 fragment 都具有相同的代码。当我尝试调用当前 fragment 位置时,它会调用前一个 fragment 以及前一个数据。但是景色还可以。

例如:

  • 从 fragment 零开始,一切正常
  • 从 Fragment 1,它调用 FragmentZero 和它的数据。

直到我到达最后一个 fragment 。但在到达最后一个 fragment 后,一切都在正确执行。

这是我的 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();
}
}

我正在尝试将当前 fragment 值传递给下一个 Activity 。

最佳答案

当您尝试将当前 Fragment 值传递给下一个 Activity 时,您可以从 Activity 设置当前位置。

声明一个变量,例如

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) {

}
});

现在从 Fragment 调用当前位置并使用 currentPos 从 fragment 访问数据。

希望你能得到正确的值

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

关于android - 尝试访问新 fragment 数据时调用旧 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57439655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com