0

からのフラグメントのTextView(ビューページ内)へのアクセスタイトルに記載されているように、フラグメント内のTextViewをアクセスしようとしています(setTextなど)。フラグメントはアクティビティ内のビューページにロードされます。このTextViewにアクティビティクラスからアクセスしたいと思います。アクティビティ

private PagerAdapter mPagerAdapter; 
private ViewPager pager; 
FragmentPageOne fragPageOne; 
FragmentPageTwo fragPageTwo; 

活動ののonCreateの発揮:

fragPageOne= new FragmentPageOne(); 
fragPageTwo = new FragmentPageTwo(); 

mPagerAdapter = new ViewPagerAdapter(this, getSupportFragmentManager(), 
    fragPageOne.getClass(), fragPageTwo.getClass(), 
); 
pager = (ViewPager) findViewById(R.id.eventPager); 
pager.setAdapter(mPagerAdapter); 

ViewPagerAdapterクラス:

public class ViewPagerAdapter extends FragmentPagerAdapter { 

    private final List<Class<? extends Fragment>> fragmentsClasses; 
    private final Context context; 

    public EventViewPagerAdapter(Context context, FragmentManager fm, Class<? extends Fragment>... fragmentsClasses) { 
     super(fm); 
     this.context = context; 
     this.fragmentsClasses = Arrays.asList(fragmentsClasses); 
    } 

    public Fragment getItem(int position) { 
     return Fragment.instantiate(context, fragmentsClasses.get(position).getName()); 
    } 

    @Override 
    public int getCount() { 
     return fragmentsClasses.size(); 
    } 
} 

FragmentPageOneクラス(FragmentPageTwoの構造が類似している。):

public class FragmentPageOne extends Fragment { 

    public View rootView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     if(container == null) { 
      return null; 
     } 

     rootView = inflater.inflate(R.layout.fragment_page_1, container, false); 

     return (LinearLayout) rootView; 
    } 
} 

私は取得していますヌル・ポインタ(明らかに)私は(活動自体の中で)これを使用しよう:

TextView text = (TexView) pager.findViewById(R.id.textview1); 
text.setText("hello world); 

答えて

0

あなたの現在の断片を得る:

public Fragment getVisibleFragment(){ 
     FragmentManager fragmentManager = this.getSupportFragmentManager(); 
     List<Fragment> fragments = fragmentManager.getFragments(); 
     if(fragments != null){ 
      for(Fragment fragment : fragments){ 
       if(fragment != null && fragment.isVisible()) 
        return fragment; 
      } 
     } 
     return null; 
    } 

これからfindViewByIdを使用するフラグメントのビューを取得ビュー。

+0

入力いただきありがとうございます。これは私の活動の中でですか? –

+0

はい、これを達成できるかどうか教えてください。 –

+0

私は試しました。しかし、それでも同じエラーが発生します。私は電話しました: 'View current = getVisibleFragment()。getView(); TextView text =(TextView)current.findViewById(R.id.textview1); text.setText( "asdf"); ' –

関連する問題