前提
下記を参考にViewPagerを実装しました。
https://developer.android.com/training/animation/screen-slide-2?hl=ja
実現したいこと
上記サイトでいうScreenSlidePagerActivityからそれぞれのページの内部に設置されているViewにアクセスしたいです。
(R.layout.fragment_screen_slide_pageの中のTextViewなど)
発生している問題・エラーメッセージ
単純にScreenSlidePagerActivityでfindViewByIdとするとNullPointerExceptionが発生してしまいます。
java.lang.NullPointerException: findViewById(R.id.id1) must not be null
該当のソースコード
kotlin
1import androidx.fragment.app.Fragment; 2 import androidx.fragment.app.FragmentActivity; 3 ... 4 public class ScreenSlidePagerActivity extends FragmentActivity { 5 /** 6 * The number of pages (wizard steps) to show in this demo. 7 */ 8 private static final int NUM_PAGES = 5; 9 10 /** 11 * The pager widget, which handles animation and allows swiping horizontally to access previous 12 * and next wizard steps. 13 */ 14 private ViewPager2 viewPager; 15 16 /** 17 * The pager adapter, which provides the pages to the view pager widget. 18 */ 19 private FragmentStateAdapter pagerAdapter; 20 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_screen_slide); 25 26 // Instantiate a ViewPager2 and a PagerAdapter. 27 viewPager = findViewById(R.id.pager); 28 pagerAdapter = new ScreenSlidePagerAdapter(this); 29 viewPager.setAdapter(pagerAdapter); 30 31 val textView = findViewById(R.id.id1) 32 } 33 34 @Override 35 public void onBackPressed() { 36 if (viewPager.getCurrentItem() == 0) { 37 // If the user is currently looking at the first step, allow the system to handle the 38 // Back button. This calls finish() on this activity and pops the back stack. 39 super.onBackPressed(); 40 } else { 41 // Otherwise, select the previous step. 42 viewPager.setCurrentItem(viewPager.getCurrentItem() - 1); 43 } 44 } 45 46 /** 47 * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in 48 * sequence. 49 */ 50 private class ScreenSlidePagerAdapter extends FragmentStateAdapter { 51 public ScreenSlidePagerAdapter(FragmentActivity fa) { 52 super(fa); 53 } 54 55 @Override 56 public Fragment createFragment(int position) { 57 return new ScreenSlidePageFragment(); 58 } 59 60 @Override 61 public int getItemCount() { 62 return NUM_PAGES; 63 } 64 } 65 }
どの様にしたらActivityからページ内部のViewへアクセスできるでしょうか?
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー