複数のフラグメントを含むViewPagerを持つアクティビティがあります。そのフラグメントの1つにあるTextViewにアクセスして、メインアクティビティからテキストを変更するにはどうすればよいですか?複数の方法を試しましたが、すべてNullPointerExceptionで終了しました。
アクティビティ:
public class SummonerOverview extends SherlockFragmentActivity implements TabListener, OnPageChangeListener {
private ViewPager mPager;
private PagerAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.summoner_overview);
initialize();
}
private void initialize() {
// initialize Pager
mPager = (ViewPager) findViewById(R.id.viewpager);
mAdapter = new PagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mAdapter);
mPager.setCurrentItem(1);
mPager.setOnPageChangeListener(this);
}
}
PagerAdapter:
public class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
frags = new Fragment[3];
frags[0] = new StatisticsFragment(0);
frags[1] = new RatingsFragment(1);
frags[2] = new HistoryFragment(2);
}
private final int NUM_PAGES = 3;
Fragment[] frags;
@Override
public Fragment getItem(int arg0) {
if (arg0 == 0)
return frags[0];
else if (arg0 == 1)
return frags[1];
else
return frags[2];
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
フラグメント:
public class StatisticsFragment extends SherlockFragment {
public StatisticsFragment(int fragNr) {
this.fragNr = fragNr;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_overview_statistics, container, false);
return v;
}
}
StatisticsFragmentのTextviewは、fragment_overview_statistics.xmlのIDでラベル付けされていますが、試してみると
TextView tv = (TextView) findViewById(R.id.id_of_the_textview)
tv.setText("text");
initialize()メソッドの後のアクティビティのonCreate()メソッド内から、例外が発生します。