gpt4 book ai didi

android - 如何通过 FragmentPagerAdapter 将变量传递给 fragment ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:18 24 4
gpt4 key购买 nike

我是一个android初学者,正在努力学习,这是我的第一个问题,所以如果问题太简单,请原谅我,如果我使用论坛不正确,请告诉我。

我有一个使用包含 viewpager 的布局的 FragmentActivity;该 Activity 创建了一个 MyFragmentPagerAdapter 实例,该实例创建了多个 MyFragment 实例。都是support.v4版本。

我正在尝试找到一种方法将整数值(代表用户之前所做的选择,实际上可能是可绘制对象 ID)传递给 fragment 。我正在使用 Intent 传递它到此 Activity ,我知道我可以使用 bundle 将值从 FragmentPagerAdapter 传递到 fragment ,但我找不到将它从 Activity 获取到 FragmentPagerAdapter 的方法。我尝试了几种方法,包括更改构造函数,但无法使其正常工作。

我是不是漏掉了一些简单的东西?执行此操作的最佳方法是什么?

Activity

    public class SecondActivity extends FragmentActivity {
private MyIntegerAdapter1 mAdapter1;
private ViewPager mPager1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
mAdapter1 = new MyIntegerAdapter1(getSupportFragmentManager());
mPager1 = (ViewPager) findViewById(R.id.pager1);
mPager1.setAdapter(mAdapter1);

FragmentPagerAdapter

    public class MyIntegerAdapter1 extends FragmentPagerAdapter {
public MyIntegerAdapter1(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Fragment f1 = new IntegerFragment();
Bundle args1 = new Bundle();
args1.putInt("param", R.drawable.image1);
args1.putInt("number", 1);
f1.setArguments(args1);
return f1;
etc

fragment

    public class IntegerFragment extends Fragment {
private int imageResourceId;
private int numberSelected;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//change to avoid orientation crash
imageResourceId = getArguments().getInt("param");
numberSelected = getArguments().getInt("number");

最佳答案

我从原始的 Google 样本中提取了这个。

fragment :

public class IntegerFragment extends Fragment {
    int imageResourceId;
    int numberSelected;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //change to avoid orientation crash
        imageResourceId = getArguments().getInt("param");
        numberSelected = getArguments().getInt("number");
    }
    
    public static Fragment newInstance(int imageResourceId, int numberSelected) {
        IntegerFragment f = new IntegerFragment();
        f.imageResourceId = imageResourceId;
        f.numberSelected = numberSelected;
return f;
    }

FragmentPagerAdapter

public class MyIntegerAdapter1 extends FragmentPagerAdapter {
private Fragment[] fragments;

public MyIntegerAdapter1(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
if (content != null && position < content.length) {
if (fragments[position] == null) {
fragments[position] = IntegerFragment.newInstance(R.drawable.image1, 1);
}
return fragments[position % fragments.length];
}
return null;
etc

关于android - 如何通过 FragmentPagerAdapter 将变量传递给 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14957882/

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