Я пытаюсь настроить TabLayout и ViewPager с помощью фрагмента, используя привязку. Я получаю следующее исключение:Как настроить ViewPager и TabLayout со связыванием? (IllegalArgumentException: не найдено)
java.lang.IllegalArgumentException: Нет вид найденный для 0x7f0e007c (com.movies: идентификатор/popular_movies_viewpager) для фрагмента PopularMoviesTabFragment`
Моих XML файлов выглядят как эти:
activity_main:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.MainActivity"
>
<data class="MainActivityBinding"></data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/main">
<android.support.v4.view.ViewPager
android:id="@+id/popular_movies_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/popular_movies_tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</android.support.v4.view.ViewPager>
</RelativeLayout>
</layout>
popular_movies_gridview_layout:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.PopularMoviesTabFragment">
<data></data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/popular_movies_gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="600dp"
android:numColumns="4"
android:stretchMode="columnWidth"
android:gravity="left">
</android.support.v7.widget.RecyclerView>
</FrameLayout>
</layout>
Мой MainActivity:
public class MainActivity extends AppCompatActivity {
private MainActivityBinding binding;
private ViewPager viewPager;
private TabLayout tabLayout;
private ViewPagerAdapter viewPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragment(PopularMoviesTabFragment.newInstance(), "Trending");
viewPager= binding.popularMoviesViewpager;
binding.popularMoviesViewpager.setAdapter(viewPagerAdapter);
binding.popularMoviesTablayout.setupWithViewPager(viewPager);
}
}
Мой фрагмент:
public class PopularMoviesTabFragment extends Fragment {
private List<Movie> movies = new ArrayList<>();
private PopularMoviesGridviewLayoutBinding binding;
private PopularMoviesAdapter adapter;
public PopularMoviesTabFragment() {
// Required empty public constructor
}
public static PopularMoviesTabFragment newInstance() {
PopularMoviesTabFragment fragment = new PopularMoviesTabFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(getActivity(), R.layout.popular_movies_gridview_layout);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 3);
binding.popularMoviesGridview.setLayoutManager(layoutManager);
.
.
.
.
}
Как я должен изменить свой код, чтобы быть в состоянии избежать без вида на исключение фрагмента?