ViewPager中Fragment和Activity直间的传值

这篇博客介绍了如何在ViewPager中实现Fragment和Activity之间的值传递。通过在Fragment中定义公共静态方法getInstance()来接收传值,然后在onCreateView()中通过Bundle获取并显示传递的参数。在Activity中,通过创建字符串数组并将其作为参数在ViewPager适配器的getitem方法中传递给Fragment。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码拿走,代码拿走,首先因为我的需求页面都差不多,类似于头条的那种,所以直接公用了一个fragment布局,当然你也可以创建多个,没有影响,主要实现的就行Fragment和Activity的传值处理

首先创建一个Fragment,在这里面我是定义了一个公共的静态方法,getInstance(),这是一个传值的方法,要在activity中调用,直接复制在你的Fragment中就行,onCreateView()中的第一行就是使用代码的形式创建一个Textview控件,然后通过

        Bundle arguments = this.getArguments();
        String url = arguments.getString("url");

显示拿到传递的数值,拿到的就是getInstance(),中所返回的参数


public class NewsFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        TextView textView = new TextView(getActivity());
        Bundle arguments = this.getArguments();
        String url = arguments.getString("url");
          textView.setText(url);

        return textView;
    }
    
    public static Fragment getInstance(String url){
        NewsFragment newsFragment = new NewsFragment();

        Bundle budle=new Bundle();
        budle.putString("url",url);
        newsFragment.setArguments(budle);
        return newsFragment;

    }
}

activity中的实现方式,这里我是直接创建了一个string类型的数组,里面两个数据,传值的话就直接在ViewPager的适配器中的gitItem方法处理

  Fragment fragment = NewsFragment.getInstance(urls[position]);

详细的话看代码


public class MainActivity extends FragmentActivity {
 String[] urls=new String[]{"www.baidu.com","www.toutiao.com"};
    private ViewPager vp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vp = findViewById(R.id.vp);
        vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                Fragment fragment = NewsFragment.getInstance(urls[position]);
                return fragment;
            }

            @Override
            public int getCount() {
                return urls.length;
            }
        });

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值