Я пытаюсь использовать один и тот же фрагмент с одним и тем же макетом для нескольких имен ключей [Заголовки в коде]. Таким образом, будет несколько вкладок, каждая для каждого key_name [заголовка, позже разделенного как blog_name для фрагмента]. Основываясь на key_name, я пытаюсь изменить данные. создание фрагментов, как показано ниже.
private void setupViewPager(ViewPager viewPager) {
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(bundle != null) {
Headers = bundle.getStringArrayList("Headers");
}
Bundle argsBundle=new Bundle();
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
for (String header: Headers) {
argsBundle.putString("blog_name", header);
adapter.addFragment(new Blog(), header, argsBundle);
}
adapter.addFragment(new Blog(), "aaaa", argsBundle);
viewPager.setAdapter(adapter);
}
Этот код создает 3 вкладки (одного и того же фрагмента).
Я бы использовал одну и ту же компоновку на этих 3 вкладках.
Это мой фрагмент
public class Blog extends Fragment {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;
private String blog_name;
public static Blog newInstance(String param1, String param2) {
Blog fragment = new Blog();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
public Blog() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args != null){
this.blog_name = args.getString("blog_name");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (getArguments() != null) {
Bundle argsBundle = new Bundle();
blog_name = getArguments().getString("blog_name");
Toast.makeText(this.getContext(), "wow" + blog_name, Toast.LENGTH_SHORT).show();
}
return inflater.inflate(R.layout.fragment_blog, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
((TextView)view.findViewById(R.id.test)).setText(blog_name.toString());
}
}
Итак, на 3 мероприятиях я вижу один и тот же тост. «wow» + последний элемент из заголовков (TextView) test.setText также будет иметь ту же строку (последний элемент из заголовков)
Примечание. Заголовки находятся в setupViewPager, просто массив строк.