2012年3月17日土曜日

エラー No view found for id 0xffffffff for fragment の原因

ViewPagerでフラグメントを使ってみようと、こんなコードを書いてみた

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  ViewPager vp = new ViewPager(this);
  setContentView( vp );
  FragmentManager fm = getSupportFragmentManager();
  MyAdapter fpa = new MyAdapter( fm );
  vp.setAdapter( fpa );
}

そしたらこんなエラーが出た。

 java.lang.IllegalArgumentException: No view found for id 0xffffffff for fragment HogeFragment{41850420 #0 id=0xffffffff android:switcher:-1:0} 

調べてみるとViewPagerにはIDを指定してあげないといけないらしい。 vp.setId( )するなりxmlの場合はちゃんとIDを指定してあげること。


vp.setId( R.id.view_pager );  
みたいな感じ。


( In English...  ViewPager must be specified with unique ID . We should specify ID by vp.setID( ) or id attribute in XML . Like... vp.setId( R.id.view_pager );  )


IDは/values/ids.xmlに以下のように定義すると良い
( In English ... If you want to specify ID dynamically, define ID in /values/ids.xml with following. )

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <item type="id" name="view_pager" />
</resources>


4 件のコメント:

  1. I didn't understand much, but you helped me : D. Arigatou gozaimasu!

    返信削除
  2. blogspot.de ... very much german...

    返信削除
  3. You can just user this variable to set an id for ur viewPager

    @IdRes
    int portraitViewPagerId = 65;

    返信削除