У меня проблема с ViewPager (впервые использующим его), ViewPager будет иметь неизвестный размер фрагментов, я объясню шаг за шагом.
Вот мой ViewPager:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".events.AllEvents"
android:background="@drawable/gradient"
android:padding="16dp">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
Я пытался сделать это как можно проще, вот адаптер:
import java.util.List;
class MyPagerAdapter extends FragmentStatePagerAdapter {
private List<Event> events;
public MyPagerAdapter(FragmentManager fm, List<Event> events) {
super(fm);
this.events = events;
}
@Override
public Fragment getItem(int i) {
EventFragment fragment = new EventFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("event", events.get(i));
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return events.size();
}
}
для фрагмента, я не буду помещать его XML-файл, потому что он немного длинный, вот его класс:
public class EventFragment extends Fragment {
@BindView(R.id.eventDetailButton)
Button detailsButton;
@BindView(R.id.eventSubscribeButton)
Button subscribeButton;
@BindView(R.id.eventMainImage)
ImageView eventImage;
@BindString(R.string.event_subcribtion)
String eventSubscribtionTag;
Event currentEvent;
public EventFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_event, container, false);
ButterKnife.bind(this, view);
if (getArguments() != null) {
currentEvent = (Event) getArguments().getSerializable("event");
}
System.out.println("*****************************");
Log.d("****FRAGMENT TAG*****", "I REACHED HERE");
System.out.println("*****************************");
return view;
}
конечно сообщения журнала не показываются, я нигде не доходил ...
наконец, вот действие, в котором я выполняю:
public class AllEvents extends AppCompatActivity {
private MyPagerAdapter adapter;
@BindView(R.id.viewPager)
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_events);
ButterKnife.bind(this);
//Apply the adapter
adapter = new MyPagerAdapter(getSupportFragmentManager(), new ArrayList<>(10));
mViewPager.setAdapter(adapter);
}
}
Мне просто нужно знать, чего мне не хватает, или что я здесь не так сделал, я посмотрел на очень много похожих вопросов, но ни один из них не совпадает с моим.
PS: если я помещаю какое-либо сообщение журнала до или после mViewPager.setAdapter(adapter)
, оно обычно отображается на консоли.