最近在改良Android的APP,先是view flipper,然後現在進階到view pager。
ViewPager可以作出很棒的特效,問題就是在xml方面,如果你要設定物件的話就必須要先
findViewbyId(),這乍聽之下沒甚麼問題,可是假如不是在main.xml檔(主要的xml)的物件呢?
我們使用findViewById()還是可以找到R.id.物件名稱,但只要你一使用的話就會出現錯誤-
java.lang.IllegalState...... NullPointerException....等等。為什麼會出現這樣的錯誤呢?
答案是因為你呼叫的id不在現在的頁面上(Android抓不到他)因此就出現nullpointerException!
在寫的時候也遇到這樣的問題,因此就上網查查看有沒有人也遇到這樣的問題?
發現這篇: 這裡
大意就是說
1.先宣告一個全域變數: private View currentViewPage
2.在 public class MyViewPagerAdapter extends PagerAdapter {} 裡面加入
@Override
public void setPrimaryItem(ViewGroup container, int position,
Object object) {
currentViewPage = (View) object;
}
也就是把現在的position的object轉型成view然後放入currentViewPage(第一步驟設定的變數)裡
面。
3.最後 IP_edt = (EditText) currentViewPage.findViewById(R.id.IP_edt01);
IP_edt.setText("123");
就可以用了喔!(當然IP_edt已經在前面有宣告過了)
希望可以幫助也同樣遇到困難的人!