ViewPagerにおけるFragmentとActivityの直間の伝達値
2134 ワード
コードは持っていって、コードは持っていって、まず私の需要のページがすべて悪くないため、トップのあのようなことに似ていて、だから直接1つのfragmentのレイアウトを公用して、もちろんあなたも複数を作成することができて、影響がなくて、主に実現した行FragmentとActivityの伝値処理
まずFragmentを作成します.ここでは共通の静的メソッドを定義しました.getInstance()は、activityで呼び出すには、Fragmentに直接コピーします.onCreateView()の最初の行は、コードの形式でTextviewコントロールを作成し、
Bundle arguments = this.getArguments(); String url = arguments.getString("url");
渡された数値を表示し、getInstance()で返されるパラメータを取得します.
Activityの実装では、ここではstringタイプの配列を直接作成し、2つのデータを転送するとViewPagerのアダプタのgitItemメソッドで処理します.
Fragment fragment = NewsFragment.getInstance(urls[position]);
詳しくはコードを見て
まず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タイプの配列を直接作成し、2つのデータを転送すると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;
}
});
}
}