代码拿走,代码拿走,首先因为我的需求页面都差不多,类似于头条的那种,所以直接公用了一个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;
}
});
}
}