この間、MainActivityで取得した変数positionを子Fragmentで使いたい、といった内容の質問をさせていただいたのですが、参考にさせて頂きたい意見を頂いたものの、知識不足で生かせませんでした。そこで、MainActivity内でOnPageChangeListenerを使用してページ番号を取得し、子Fragmentに表示できないかと考えました。スクロール中のタイミングで取得し、表示させようと思っているのですが、やはり子Fragmentに表示させる段階でつまづいているのか、実行できてもページ番号の表示ができません。‟text=”以降のところが違うと思う気はしているのですが、子Fragmentに用意したTextView(Id:text1)に表示させるのに足りないものは何でしょうか。知識不足で中途半端な質問になってしまいすみません。MainActivityのコードを全文載せています。
java
1package com.example.viewpagertest; 2 3import android.net.Uri; 4import android.support.v4.app.Fragment; 5import android.support.v4.app.FragmentActivity; 6import android.support.v4.app.FragmentManager; 7import android.support.v4.app.FragmentStatePagerAdapter; 8import android.support.v4.view.ViewPager; 9import android.support.v7.app.AppCompatActivity; 10import android.os.Bundle; 11import android.util.Log; 12import android.widget.TextView; 13 14import java.util.Random; 15 16 17public class MainActivity extends FragmentActivity { 18 private InfinateSwipeViewPagerAdapter mPagerAdapter; 19 private ViewPager mViewPager; 20 private ViewPager.OnPageChangeListener mOnPageChangeListener; 21 TextView text; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_main); 27 28 mPagerAdapter = new InfinateSwipeViewPagerAdapter(getSupportFragmentManager()); 29 mViewPager = (ViewPager) findViewById(R.id.pager); 30 mViewPager.setAdapter(mPagerAdapter); 31 mViewPager.setOnPageChangeListener(mOnPageChangeListener); 32 } 33 34 @Override 35 protected void onResume() { 36 super.onResume(); 37 mViewPager.setCurrentItem(1); 38 } 39 40 class InfinateSwipeViewPagerAdapter extends FragmentStatePagerAdapter { 41 public static final int MAX_PAGE_NUM = 10; 42 private static final int OBJECT_NUM = 3; 43 44 public InfinateSwipeViewPagerAdapter(FragmentManager fm) { 45 super(fm); 46 } 47 48 @Override 49 public Fragment getItem(int position) { 50 Fragment fragment = null; 51 Log.d("position", "positionは「" + position + "」"); 52 int diff = (position - (MAX_PAGE_NUM / 2)) % OBJECT_NUM; 53 int index = (0 > diff) ? (OBJECT_NUM + diff) : diff; 54 switch (index) { 55 case 0: 56 fragment = new TestFragment1(); 57 break; 58 case 1: 59 fragment = new TestFragment2(); 60 break; 61 case 2: 62 fragment = new TestFragment3(); 63 break; 64 } 65 return fragment; 66 } 67 68 @Override 69 public int getCount() { 70 return MAX_PAGE_NUM; 71 } 72 } 73 74 class OnPageChangeListener{ 75 public void onPageScrollStateChanged(int state) { 76 if(state == ViewPager.SCROLL_STATE_DRAGGING){ 77 int page = mViewPager.getCurrentItem(); 78 text = (TextView)findViewById(R.id.text1); /*この行が実行されてない*/ 79 } 80 } 81 } 82}
回答1件
あなたの回答
tips
プレビュー